nginx https优化需按硬件、客户端和业务差异化调优:①多核cpu下启用worker_cpu_affinity auto与worker_processes auto,提升tls握手效率;②tls协议保留v1.2、禁用v1.0/v1.1,密码套件优先pfs+硬件加速组合并开启服务端优先;③延迟敏感场景启用ssl会话双缓存、http/2及hsts。

配置 Nginx HTTPS 以兼顾安全与性能,关键不在“统一模板”,而在于按服务器硬件架构(CPU 核心数、内存容量)、客户端分布(老旧浏览器占比、移动设备比例)和业务特征(首屏敏感型 or 吞吐密集型)做差异化调优。下面从三个实操维度展开,聚焦可落地的配置逻辑。
适配多核 CPU 的并发与亲和性优化
Nginx 默认的多进程模型需与物理 CPU 架构对齐,否则会因跨核调度拖慢 TLS 握手效率。
-
自动绑定核心:在全局块中启用
worker_cpu_affinity auto;,Nginx 会将每个 worker 进程一对一绑定到独立 CPU 核心,减少缓存失效和上下文切换开销 -
连接数匹配:设
worker_processes auto;(等同于 CPU 核心数),再配合worker_connections 4096;(非默认 1024),单机理论并发可达核心数 × 4096 -
系统级支撑:同步在
/etc/security/limits.conf中提升文件描述符上限,例如nginx soft nofile 65535,避免被内核限制卡住
按客户端能力分层的 TLS 协议与密码套件
不是越“新”越好——盲目禁用 TLSv1.2 或强推 ECDHE-ECDSA,可能让 IE11、Android 4.x 等存量用户握手失败或降级到低效算法。
-
协议兼容底线:生产环境建议保留
TLSv1.2,谨慎启用TLSv1.3(需 OpenSSL 1.1.1+ 且确认客户端覆盖率 >95%);明确禁用SSLv3、TLSv1、TLSv1.1 -
密码套件排序逻辑:优先使用支持前向保密(PFS)且硬件加速友好的组合,例如:
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305;
若需兼容旧设备,可在末尾追加AES128-SHA等 fallback 套件 -
服务端优先权:始终开启
ssl_prefer_server_ciphers on;,确保客户端不强行选择弱套件
面向延迟敏感场景的会话复用与 HTTP/2 优化
对搜索、实时交互类服务,首字节时间(TTFB)比吞吐量更关键。重点压缩 TLS 握手往返次数。
-
会话缓存双机制:同时启用共享内存缓存 + Session Tickets
ssl_session_cache shared:SSL:20m;(20MB 共享缓存,支持多 worker 复用)ssl_session_timeout 4h;(延长有效时间,降低重协商频率)ssl_session_tickets on;(客户端本地缓存会话参数,首次握手后秒级复用) -
HTTP/2 必启且精配:监听行必须含
http2,例如listen 443 ssl http2;
启用推送预加载:http2_push_preload on;,但仅对确定性静态资源(如关键 CSS、字体)有效,避免滥用 -
HSTS 强制升级:添加
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;,减少后续 HTTP→HTTPS 重定向跳转











