nginx通过include指令可将ssl配置(如证书路径、协议、加密套件等)抽离至独立文件(如/etc/nginx/conf.d/ssl.conf),在server块中统一引入,实现复用与集中维护;多个站点可共用同一份ssl配置,证书路径不同则需分文件或借助变量动态设置,修改后须执行nginx -t验证语法并nginx -s reload重载生效。

Nginx 使用 include 指令可以把 SSL 相关配置(如证书路径、协议、加密套件等)从主 server 块中抽出来,统一维护,避免重复和出错。
SSL 配置文件单独存放
把 SSL 参数集中写到一个独立文件里,比如 /etc/nginx/conf.d/ssl.conf,内容如下:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; <p>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;</p><p>ssl_session_cache shared:SSL:10m; ssl_session_timeout 10m; ssl_session_tickets off;</p><p>ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 1.1.1.1 valid=300s; resolver_timeout 5s;</p>
在 server 块中 include 这个文件
在站点的 server 配置里(如 /etc/nginx/sites-enabled/example.com),把 SSL 相关行删掉,只保留 include:
server {
listen 443 ssl http2;
server_name example.com;
<pre class="brush:php;toolbar:false;">include /etc/nginx/conf.d/ssl.conf; # ← 关键这行
root /var/www/html;
index index.html;
...}
多个站点复用同一份 SSL 配置
如果多个域名共用一套 TLS 策略(比如都用 Let’s Encrypt + 相同 cipher),只需让所有 server 块都 include 同一个 ssl.conf。证书路径不同?可以:
- 为每个域名建各自的
ssl-example.com.conf、ssl-api.com.conf,再分别 include - 或用变量 + map 模块动态设置
ssl_certificate(需 Nginx ≥ 1.15.9,且证书路径需在编译时支持变量) - 更稳妥的做法:用 shell 脚本或 Ansible 自动渲染不同域名的 ssl 配置文件
验证与重载
修改后必须检查语法并重载,否则可能中断 HTTPS 服务:
-
sudo nginx -t—— 确保 include 文件路径正确、语法无误 -
sudo nginx -s reload—— 安全重载,不中断现有连接 - 注意:include 路径是相对于 nginx 配置根目录(通常是
/etc/nginx)解析的,建议用绝对路径避免歧义











