Nginx 不支持为 location 路径单独配置 SSL 证书,证书绑定粒度最小为 server 块(域名+端口);可通过 include 引入统一 SSL 配置片段实现多站点复用,推荐将证书与私钥存于 ssl/ 目录并用相对路径引用,同时在 server 块内加载该片段。

直接在 Nginx 的 server 块中写死证书路径虽然可行,但不利于维护和复用。用 include 引入 SSL 配置片段,能让主配置更清爽,也方便多站点共用同一套 SSL 参数。
把密钥对放进统一目录并命名规范
建议在 Nginx 安装目录下新建 ssl/ 文件夹(如 C:\nginx\ssl\ 或 /usr/local/nginx/ssl/),放入你本地生成的文件:
-
证书文件:推荐命名为
server.crt或fullchain.pem(如果是 Let’s Encrypt) -
私钥文件:推荐命名为
server.key,且确保权限为600(Linux/macOS 下执行chmod 600 server.key) - 避免使用带密码保护的私钥(如
genrsa -des3生成的),否则启动 Nginx 会卡住等待输入密码
创建独立的 SSL 配置片段(如 ssl.conf)
在 conf.d/ 或 snippets/ 目录下新建一个文件,例如 ssl.conf,内容如下:
ssl_certificate ssl/server.crt; ssl_certificate_key ssl/server.key; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384; ssl_prefer_server_ciphers off; ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m;
注意:ssl/ 是相对于 Nginx 启动时的 --prefix 路径(Windows 默认是解压目录,Linux 通常是 /usr/local/nginx),所以这里用的是相对路径;也可写绝对路径,如 /etc/nginx/ssl/server.crt。
在 server 块中用 include 加载
打开你的站点配置(如 conf.d/example.com.conf),在 server { ... } 内部引入:
server {
listen 443 ssl;
server_name example.com;
<pre class='brush:php;toolbar:false;'>include conf.d/ssl.conf; # ← 关键:加载 SSL 公共配置
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}}
如果还想支持 HTTP 自动跳转 HTTPS,再加一个纯 HTTP 的 server 块:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}验证与重启
改完后务必检查语法并重载:
- Windows:
nginx.exe -t→ 无报错再nginx.exe -s reload - Linux:
sudo nginx -t && sudo nginx -s reload - 浏览器访问
https://example.com,地址栏显示锁图标即表示成功


















