nginx https 配置应注重结构清晰、策略分层、证书解耦和验证闭环:统一证书路径与自动续期、模块化ssl参数、启用ocsp stapling与hsts、升级http/2并优化连接复用。

要让 Nginx 的 HTTPS 配置既安全又便于扩展,关键不在堆参数,而在于结构清晰、策略分层、证书解耦和验证闭环。下面从四个实际可落地的方向展开。
统一证书管理路径与自动续期机制
扩展性差常源于证书硬编码路径和手动更新。应将证书路径抽象为变量或集中配置块,并绑定自动化流程:
- 使用 Let’s Encrypt + Certbot 配合
--deploy-hook自动重载 Nginx(避免 reload 失败导致服务中断) - 证书路径统一指向符号链接,如
/etc/nginx/ssl/current.crt→/etc/letsencrypt/live/example.com/fullchain.pem,切换时只改链接不改配置 - 泛域名证书(
*.example.com)配合server_name多域名匹配,减少重复 server 块
模块化 SSL 安全策略配置
把 TLS 协议、加密套件、会话缓存等共性安全参数抽离成独立文件,通过 include 引入,避免每个 server 块重复粘贴:
- 新建
/etc/nginx/conf.d/ssl-params.conf,写入:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-AES-128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m; - 在各 HTTPS server 块中只需
include /etc/nginx/conf.d/ssl-params.conf;,升级策略时改一处,全局生效
启用并验证 OCSP Stapling 与 HSTS
这两项不是“锦上添花”,而是提升可信度与防降级攻击的核心手段:
-
OCSP Stapling:客户端无需直连 CA 查询证书状态,由 Nginx 主动获取并附带在握手响应中
配置需包含:
ssl_stapling on;
ssl_stapling_verify on;
ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
resolver 8.8.8.8 1.1.1.1 valid=300s; -
HSTS:强制浏览器后续访问只走 HTTPS,防止 SSL stripping 攻击
添加响应头:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
注意:preload表示申请加入浏览器 HSTS Preload List,提交前务必确保所有子域都已支持 HTTPS
HTTP/2 + 连接复用与性能兜底
HTTPS 扩展性不仅看安全,也看并发承载能力。协议升级与连接管理直接影响横向扩展效果:
- 监听行启用 http2:
listen 443 ssl http2;(要求 Nginx ≥ 1.9.5,OpenSSL ≥ 1.0.2) - 开启 keepalive 连接复用:
在 upstream 块中配置:
keepalive 32;
并在 location 中添加:
proxy_http_version 1.1;
proxy_set_header Connection ''; - 限制单 IP 连接数防耗尽资源:
limit_conn addr 20;(配合limit_conn_zone $binary_remote_addr zone=addr:10m;)











