nginx 配置 https 需监听 443 端口并指定证书与私钥路径,统一存于 /etc/nginx/ssl/ 且设权限,再添加 80 端口重定向至 https,最后通过 nginx -t 和 systemctl reload nginx 验证生效。

直接在 Nginx 配置文件里加一个监听 443 端口的 server 块,指定证书和私钥路径,再把 HTTP 请求自动跳转到 HTTPS,就能跑起来基础 HTTPS 了。关键不是写得多,而是路径、权限和协议配置别出错。
准备证书文件并规范存放
确保你已有两个核心文件:
-
证书文件(如
example.com.crt或fullchain.pem),含服务器证书和中间证书链 -
私钥文件(如
example.com.key),必须严格保密
推荐统一放在 /etc/nginx/ssl/ 目录下,并设置安全权限:
sudo chmod 600 /etc/nginx/ssl/*.key<br>sudo chmod 644 /etc/nginx/ssl/*.crt
添加 HTTPS server 块
在站点配置文件(如 /etc/nginx/sites-available/example.com)中加入以下内容:
server {<br> listen 443 ssl;<br> server_name example.com;<br><br> ssl_certificate /etc/nginx/ssl/example.com.crt;<br> ssl_certificate_key /etc/nginx/ssl/example.com.key;<br><br> ssl_protocols TLSv1.2 TLSv1.3;<br> ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';<br> ssl_prefer_server_ciphers off;<br><br> root /var/www/html;<br> index index.html;<br><br> location / {<br> try_files $uri $uri/ =404;<br> }<br>}
注意:ssl_certificate 路径若为 fullchain.pem,说明它已包含完整证书链;若只用 .crt 文件,需确认是否含中间证书,否则部分客户端会验证失败。
强制 HTTP 自动跳转 HTTPS
在同一配置文件中追加一个仅监听 80 端口的 server 块:
server {<br> listen 80;<br> server_name example.com;<br> return 301 https://$host$request_uri;<br>}
这样所有 HTTP 请求都会永久重定向到对应 HTTPS 地址,避免用户手动输入 http:// 导致不安全访问。
验证并重载配置
执行两步检查:
- 语法检测:
sudo nginx -t—— 必须显示success才能继续 - 重载服务:
sudo systemctl reload nginx或sudo nginx -s reload
完成后,用浏览器访问 https://example.com,地址栏应出现锁形图标;用 curl -I https://example.com 可确认返回状态码为 200 且 header 含 Strict-Transport-Security(如已配置 HSTS)。











