🛡️ Nginx 配置 HTTPS 完整指南

✅ 一、准备工作

域名已备案(国内服务器)

SSL/TLS 证书和私钥文件

通常包括:

your_domain.crt:服务器证书

your_domain.key:私钥文件

chain.crt 或 ca.crt:中间证书链(如果有的话)

安装好 Nginx

✅ 二、证书格式要求

Nginx 推荐使用 PEM 格式的证书。如果你收到的是多个文件:

合并证书链(如有):
cat your_domain.crt chain.crt > fullchain.crt

✅ 三、Nginx HTTPS 配置示例

编辑站点配置文件(如 /etc/nginx/conf.d/yourdomain.conf):

`

server {

listen 443 ssl http2; # 开启 HTTPS + HTTP/2(需 OpenSSL 1.0.2+ 和 Nginx 支持)

server_name yourdomain.com www.yourdomain.com;

复制代码
# SSL 配置
ssl_certificate /path/to/fullchain.crt;
ssl_certificate_key /path/to/your_domain.key;

ssl_protocols TLSv1.2 TLSv1.3; # 禁用不安全旧协议
ssl_ciphers HIGH:!aNULL:!MD5:!kEDH; # 使用强加密套件
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;

# OCSP Stapling(可选)
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

# HSTS 头(建议第一次启用时设置 max-age=60,测试无误后再改为一年)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

# 日志格式
access_log /var/log/nginx/yourdomain_https_access.log;
error_log /var/log/nginx/yourdomain_https_error.log;

location / {
    root /usr/share/nginx/html;
    index index.html index.htm;
    try_files $uri $uri/ =404;
}

# 可以在这里添加反向代理等配置

}

`

✅ 四、强制 HTTP 跳转 HTTPS(推荐)

新建一个监听 80 端口的 server 块:
server { listen 80; server_name yourdomain.com www.yourdomain.com; return 301 https://$host$request_uri; }

✅ 五、检查配置 & 重启 Nginx

`

检查语法是否正确

nginx -t

重载配置

systemctl reload nginx

`

✅ 六、图形化 SSL/TLS 长期管理控制台
web控制台

图文教程

✅ 七、高级配置建议(生产环境)

启用 HTTP/2:需要 TLSv1.2+ 和 ALPN 支持,确保 Nginx 编译时带有 --with-http_v2_module

OCSP Stapling:提升证书验证速度,减少客户端等待时间

HSTS Preload List:如果想加入浏览器预加载列表,请前往 hstspreload.org 提交

✅ 八、常见问题排查

HTTPS 页面无法打开:端口未开放或证书路径错误;检查防火墙、证书路径、Nginx 配置

"证书不受信任":中间证书未合并;确保合并了完整的证书链

"证书过期":未及时更新;设置监控或使用 Let's Encrypt 自动更新

"ERR_SSL_VERSION_OR_CIPHER_MISMATCH":协议或加密套件不兼容;修改 ssl_protocols 和 ssl_ciphers

欢迎继续提问,我可以提供更定制化的配置方案 😊