Nginx域名与SSL证书配置完整流程
Nginx域名与SSL证书配置完整流程
主要有四步:
第一步:安装nginx(如果已经安装,跳过)
第二步:创建SSL证书存放目录,并上传证书
第三步:编写nginx配置文件
第四步:检查配置并重新加载nginx
详细步骤如下:
一、准备工作
1. 确认证书文件
从证书颁发机构获取以下文件:
- 域名证书文件(通常为
.crt或.pem格式) - 证书链文件(chain bundle)
- 私钥文件(
.key格式)
2. 服务器环境检查
# 检查Nginx是否安装
nginx -v# 检查防火墙状态
systemctl status firewalld
二、上传证书文件
1. 创建证书目录
sudo mkdir -p /etc/nginx/ssl/xy.com.cn
2. 上传证书文件
将证书文件上传到服务器:
www.xy.com.cn.crt(域名证书)www.xy.com.cn.key(私钥文件)
3. 设置文件权限
sudo chmod 600 /etc/nginx/ssl/xy.com.cn/*
sudo chown root:root /etc/nginx/ssl/xy.com.cn/*
三、Nginx配置
1. 创建主配置文件
在 /etc/nginx/conf.d/xy.com.cn.conf 创建配置文件:
# HTTP重定向到HTTPS
server {listen 80;server_name www.xy.com.cn xy.com.cn;# 小程序域名验证可能需要这个(如果微信要求)location /.well-known/ {root /var/www/html;access_log off;}# 重定向所有HTTP流量到HTTPSreturn 301 https://$server_name$request_uri;
}# HTTPS服务器配置
server {listen 443 ssl http2;server_name www.xy.com.cn xy.com.cn;# SSL证书配置ssl_certificate /etc/nginx/ssl/xy.com.cn/www.xy.com.cn.crt;ssl_certificate_key /etc/nginx/ssl/xy.com.cn/www.xy.com.cn.key;# 如果有证书链文件# ssl_trusted_certificate /etc/nginx/ssl/xy.com.cn/chain.crt;# SSL安全配置ssl_protocols TLSv1.2 TLSv1.3;ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;ssl_prefer_server_ciphers on;ssl_session_cache shared:SSL:10m;ssl_session_timeout 10m;# 安全头设置add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;add_header X-Frame-Options DENY;add_header X-Content-Type-Options nosniff;add_header X-XSS-Protection "1; mode=block";# 小程序后端API配置location /api/ {proxy_pass http://localhost:8080; # 根据实际后端服务端口调整proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;# CORS设置 - 小程序需要add_header Access-Control-Allow-Origin '*' always;add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, PUT, DELETE' always;add_header Access-Control-Allow-Headers 'Authorization,Content-Type,Accept,Origin,User-Agent,DNT,Cache-Control,X-Mx-ReqToken,X-Requested-With' always;if ($request_method = 'OPTIONS') {return 204;}}# 静态资源服务location /static/ {alias /var/www/xy.com.cn/static/;expires 1y;add_header Cache-Control "public, immutable";}# 根路径配置(根据实际需求调整)location / {# 可以是静态文件或反向代理到前端服务root /var/www/xy.com.cn/html;index index.html index.htm;# 或者如果是单页应用,添加try_filestry_files $uri $uri/ /index.html;}# 健康检查端点location /health {access_log off;return 200 "healthy\n";add_header Content-Type text/plain;}# 日志配置access_log /var/log/nginx/xy.com.cn.access.log;error_log /var/log/nginx/xy.com.cn.error.log;
}
2. 检查并启用配置
# 检查配置文件语法
sudo nginx -t# 重新加载Nginx配置
sudo nginx -s reload
# 或
sudo systemctl reload nginx
四、防火墙配置
1. 开放端口
# 如果使用firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
五、SSL证书验证
1. 在线SSL检查
使用以下工具验证SSL配置:
- SSL Labs SSL Test
- SSL Checker
2. 本地验证
# 通过nginx检查443
nginx -v# 检查443端口监听
sudo netstat -tlnp | grep 443# 测试HTTPS连接
curl -I https://www.xy.com.cn
六、小程序相关配置
1. 小程序服务器域名配置
在微信小程序后台配置服务器域名:
request合法域名:
https://www.xy.com.cn
uploadFile合法域名:
https://www.xy.com.cn
downloadFile合法域名:
https://www.xy.com.cn
2. 小程序特定配置考虑
# 在小程序配置中添加以下内容
location /miniprogram/ {# 小程序API特定配置proxy_pass http://backend_service;# 小程序需要的特殊头部add_header Access-Control-Allow-Origin '*' always;add_header Access-Control-Allow-Credentials true;# 超时设置调整proxy_connect_timeout 30s;proxy_read_timeout 30s;
}
七、监控和维护
1. 设置日志轮转
在 /etc/logrotate.d/nginx 确保包含:
/var/log/nginx/xy.com.cn.*.log {dailymissingokrotate 52compressdelaycompressnotifemptycreate 644 nginx nginxpostrotate/bin/kill -USR1 `cat /var/run/nginx.pid 2>/dev/null` 2>/dev/null || trueendscript
}
2. 证书自动续期(如果使用Let’s Encrypt)
# 如果使用Certbot
sudo certbot renew --dry-run# 设置自动续期cronjob
sudo crontab -e
# 添加:0 12 * * * /usr/bin/certbot renew --quiet
八、故障排查
检查命令:
# 查看Nginx错误日志
sudo tail -f /var/log/nginx/xy.com.cn.error.log# 检查进程状态
sudo systemctl status nginx# 测试后端连接
curl http://localhost:8080/health
按照这个流程配置完成后,你的域名 www.xy.com.cn 就应该可以通过HTTPS正常访问,并且可以为小程序提供后端API服务了。
