nginx兼顾https安全与静态服务高性能的关键是配对、配准、配稳:证书路径正确、tls握手高效、静态传输启用零拷贝、缓存策略精准分层。需严格设置证书权限(私钥600)、启用http/2与ocsp装订、会话缓存、hsts头,结合sendfile、gzip及mime分级缓存,并通过nginx -t和curl验证配置生效。

要让 Nginx 同时兼顾 HTTPS 安全性与静态服务高性能,关键不是堆配置,而是把几个核心环节配对、配准、配稳:证书路径必须正确、TLS 握手不能拖慢首字节、静态文件传输要绕过用户态拷贝、浏览器和 CDN 层缓存得各司其职。
HTTPS 基础:证书安装与强制跳转
先确保 HTTPS 能跑通,再谈优化。两个文件必须放对位置、权限设严:
- 证书(fullchain.pem)和私钥(your_domain.key)统一存放在
/etc/nginx/ssl/下 - 私钥权限必须是
600:chmod 600 /etc/nginx/ssl/your_domain.key - server 块中启用 HTTPS 监听并指定路径:
listen 443 ssl http2;,ssl_certificate指向 fullchain.pem,ssl_certificate_key指向私钥 - 80 端口加一个纯跳转块:
return 301 https://$host$request_uri;,不带任何多余逻辑
TLS 性能:减少握手开销
HTTPS 慢,往往卡在 TLS 握手。以下几项能显著缩短首次连接和复用连接耗时:
- 会话缓存:用
ssl_session_cache shared:SSL:10m;和ssl_session_timeout 1440m;,让同一客户端多次访问复用会话,避免完整握手 - OCSP Stapling:开启后,Nginx 主动向 CA 获取证书状态并随握手一并下发,省去客户端额外查询延迟:
ssl_stapling on;,ssl_stapling_verify on;,并配置可信 CA 证书路径 - 协议与加密套件:只保留 TLSv1.2 和 TLSv1.3;优先选用 ECDHE + ChaCha20 或 AES-GCM 类前向安全算法,禁用 RSA 密钥交换和老旧 cipher
- HSTS 头:加
add_header Strict-Transport-Security "max-age=31536000; includeSubdomains; preload";,既防降级攻击,也减少后续 HTTP 请求试探
静态服务加速:从内核到浏览器
静态文件不是“扔进去就完事”,需打通传输链路的每一环:
- 启用零拷贝:
sendfile on;+tcp_nopush on;,让文件直接从磁盘经内核发送,不进用户空间 - 高效压缩:Gzip 开启且设合理阈值:
gzip on;,gzip_min_length 256;,gzip_comp_level 5;,对文本类资源(HTML/CSS/JS)生效 - 精准缓存控制:用
map指令按 MIME 类型设置不同过期时间,比如 JS/CSS 设为1y,HTML 设为epoch(不缓存),避免版本更新失效问题 - 关闭不必要的响应头:
server_tokens off;隐藏版本号;错误页用纯静态 HTML,防止泄露后端信息
验证与上线前检查
配置写完不等于生效,必须逐项确认:
- 语法检查:
nginx -t输出 “syntax is ok” 和 “test is successful” - 重载配置:
nginx -s reload或systemctl reload nginx - 用
curl -I https://yoursite.com查看是否返回200 OK、Strict-Transport-Security、Content-Encoding: gzip等关键头 - 打开 Chrome DevTools → Network 标签,检查资源是否走 HTTP/2、TTFB 是否低于 100ms、大静态文件是否启用
Accept-Ranges











