帮助中心

Nginx配置SSL数字证书教程

2026-02-23 | 安装教程

一、准备工作

 
在配置前,请确认你已具备以下条件:
 
  1. 一台已安装 NGINX 的服务器(Linux 系统,如 CentOS、Ubuntu);
  2. 一个已备案的域名(SSL 证书需绑定域名);
  3. SSL 证书文件。
 

1.1 证书文件说明

 
通常 SSL 证书包含以下核心文件(不同平台命名略有差异):
 
  • 公钥文件:xxx.crtxxx.pem
  • 私钥文件:xxx.key
  • 证书链文件(可选):xxx_chain.crt(部分平台会合并到公钥文件中)。
 

二、配置步骤

 

步骤 1:上传证书到服务器

 
首先将证书文件上传到 NGINX 的证书目录(建议统一管理):
# 创建证书存放目录(自定义,建议路径)
mkdir -p /etc/nginx/ssl/你的域名
# 示例:上传证书到 /etc/nginx/ssl/example.com
# 可通过 scp 或 ftp 上传,如:
# scp 本地证书路径 root@服务器IP:/etc/nginx/ssl/example.com/

步骤 2:备份原有 NGINX 配置

避免配置出错无法回滚,先备份默认配置:
 
cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak
# 若使用虚拟主机配置(推荐),备份站点配置:
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

步骤 3:编辑 NGINX 配置文件

 
NGINX 配置有两种方式,推荐使用虚拟主机配置conf.d 目录),更易维护。
方式 1:基础 SSL 配置(核心)
新建 / 编辑站点配置文件:
vim /etc/nginx/conf.d/your_domain.conf  # 替换为你的域名,如 example.com.conf
 
粘贴以下配置(关键部分已标注注释):
# 监听 80 端口(HTTP),强制跳转到 HTTPS
server {
    listen 80;
    server_name example.com www.example.com;  # 替换为你的域名
    # 强制跳转 HTTPS
    return 301 https://$host$request_uri;
}

# 监听 443 端口(HTTPS),配置 SSL 证书
server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com www.example.com;  # 替换为你的域名

    # SSL 证书文件路径(核心)
    ssl_certificate /etc/nginx/ssl/example.com/example.crt;  # 公钥文件路径
    ssl_certificate_key /etc/nginx/ssl/example.com/example.key;  # 私钥文件路径

    # 可选:优化 SSL 配置(提升安全性和性能)
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;

    # 加密套件(遵循现代安全标准)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;

    # 可选:HSTS 配置(强制浏览器使用 HTTPS)
    add_header Strict-Transport-Security "max-age=63072000; includeSubDomains; preload" always;

    # 网站根目录(替换为你的实际路径)
    root /usr/share/nginx/html;
    index index.html index.htm;

    # 可选:配置静态资源缓存
    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ {
        expires 30d;
        add_header Cache-Control "public, max-age=2592000";
    }

    # 处理请求
    location / {
        try_files $uri $uri/ =404;
    }
}
关键配置说明:
  • listen 443 ssl:指定 443 端口启用 SSL;
  • ssl_certificate:SSL 公钥文件的绝对路径,必须正确;
  • ssl_certificate_key:SSL 私钥文件的绝对路径,权限需为 600(避免权限过大);
  • ssl_protocols:仅启用安全的 TLS 协议(禁用老旧的 SSLv3、TLSv1.1);
  • return 301:将 HTTP 请求强制跳转到 HTTPS,避免用户访问非加密链接。
 

步骤 4:修改证书文件权限

确保 NGINX 进程能读取证书文件(避免权限错误):
chmod 600 /etc/nginx/ssl/example.com/*.key  # 私钥文件必须为 600 权限
chmod 644 /etc/nginx/ssl/example.com/*.crt  # 公钥文件为 644 即可
chown -R nginx:nginx /etc/nginx/ssl/  # 赋予 NGINX 用户所有权(可选)

步骤 5:检查配置并重启 NGINX

# 检查配置语法是否正确(关键!出错会导致 NGINX 无法启动)
nginx -t

# 若提示 "nginx: configuration file /etc/nginx/nginx.conf test is successful",说明配置正确
# 重启 NGINX 使配置生效
systemctl restart nginx

# 可选:设置 NGINX 开机自启
systemctl enable nginx

三、验证配置是否生效

  1. 浏览器验证:打开浏览器,访问 https://你的域名,地址栏显示小锁图标,说明 SSL 配置成功;
  2. 命令行验证
    # 使用 curl 测试 HTTPS 连接
    curl -I https://example.com
    # 输出中包含 "Server: nginx" 和 "Strict-Transport-Security"(若配置了 HSTS),且无报错即可。

 

四、常见问题解决

 
  1. NGINX 启动失败
    • 检查配置文件语法:nginx -t,根据提示修正路径 / 语法错误;
    • 检查证书文件路径是否正确,私钥权限是否为 600;
     
  2. 浏览器提示证书不安全
    • 确认域名与证书绑定的域名一致;
    • 检查证书是否过期,证书链是否完整;
     
  3. HTTP 无法跳转到 HTTPS
    • 确认 80 端口未被防火墙 / 安全组拦截;
    • 检查 return 301 配置是否正确。
     
 

总结

  1. 配置核心:将 SSL 证书(公钥 + 私钥)放入指定目录,在 NGINX 配置中指定证书路径,并监听 443 端口;
  2. 关键优化:启用 TLSv1.2/TLSv1.3 协议、配置强制 HTTPS 跳转、设置合理的加密套件,提升安全性;
  3. 验证步骤:通过浏览器 / 命令行 / 在线工具确认 SSL 生效,确保配置无语法错误。