帮助中心
Nginx配置SSL数字证书教程
2026-02-23
|
安装教程
一、准备工作
在配置前,请确认你已具备以下条件:
- 一台已安装 NGINX 的服务器(Linux 系统,如 CentOS、Ubuntu);
- 一个已备案的域名(SSL 证书需绑定域名);
- SSL 证书文件。
1.1 证书文件说明
通常 SSL 证书包含以下核心文件(不同平台命名略有差异):
- 公钥文件:
xxx.crt或xxx.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
三、验证配置是否生效
- 浏览器验证:打开浏览器,访问
https://你的域名,地址栏显示小锁图标,说明 SSL 配置成功; - 命令行验证:
# 使用 curl 测试 HTTPS 连接 curl -I https://example.com # 输出中包含 "Server: nginx" 和 "Strict-Transport-Security"(若配置了 HSTS),且无报错即可。
四、常见问题解决
- NGINX 启动失败:
- 检查配置文件语法:
nginx -t,根据提示修正路径 / 语法错误; - 检查证书文件路径是否正确,私钥权限是否为 600;
- 检查配置文件语法:
- 浏览器提示证书不安全:
- 确认域名与证书绑定的域名一致;
- 检查证书是否过期,证书链是否完整;
- HTTP 无法跳转到 HTTPS:
- 确认 80 端口未被防火墙 / 安全组拦截;
- 检查
return 301配置是否正确。
总结
- 配置核心:将 SSL 证书(公钥 + 私钥)放入指定目录,在 NGINX 配置中指定证书路径,并监听 443 端口;
- 关键优化:启用 TLSv1.2/TLSv1.3 协议、配置强制 HTTPS 跳转、设置合理的加密套件,提升安全性;
- 验证步骤:通过浏览器 / 命令行 / 在线工具确认 SSL 生效,确保配置无语法错误。