nginx加权轮询可通过配置ssl加速专机实现ssl卸载优化:将高性能tls引擎服务器设高权重(如weight=6),配合https健康检查、sni支持及真实tls头转发,形成两级ssl终止架构。

Nginx加权轮询本身不直接处理SSL加速,但可以配合SSL卸载(SSL Termination)架构,让专机承担高权重的HTTPS请求分发与解密任务。关键在于:把SSL加速能力最强的服务器设为高权重,并确保它能稳定处理TLS握手和证书验证。
下面分三块讲清楚怎么配:
明确SSL加速专机的角色定位
SSL加速专机不是指硬件设备,而是指配置了高性能TLS引擎(如启用OpenSSL 3.0+、支持AES-NI、启用HTTP/2+ALPN)、CPU核数多、内存充足、且专门部署Nginx做SSL终止的后端节点。它不负责业务逻辑,只做解密+转发,所以适合设高weight。
加权轮询配置要点(含SSL相关优化)
在upstream中为该专机分配显著更高的weight,同时补充必要参数保障SSL链路稳定:
-
基础权重设置:比如三台后端,SSL专机配
weight=6,另两台普通应用服务器配weight=1,总权重8 → 专机承担约75% HTTPS请求 -
禁用SSL会话复用干扰:若专机还做session reuse(如
ssl_session_cache),需确保proxy_ssl_server_name on开启,避免SNI错配 -
健康检查适配HTTPS:用
health_check interval=3 fails=2 passes=2+match块校验HTTPS响应头,不能只靠TCP连通性 -
转发真实TLS信息:在server块里加
proxy_set_header X-Forwarded-Proto $scheme和proxy_set_header X-SSL-Client-Verify $ssl_client_verify,方便后端识别加密上下文
实际配置示例(含注释)
假设SSL专机IP是192.168.1.50,运行在443端口并已配置证书;其他两台是HTTP后端(8080端口):
http {
upstream ssl_offload_pool {
# SSL加速专机:高权重 + 主动健康检查
server 192.168.1.50:443 weight=6 max_fails=2 fail_timeout=10s;
# 普通后端:仅处理已解密流量
server 192.168.1.51:8080 weight=1;
server 192.168.1.52:8080 weight=1;
<pre class="brush:php;toolbar:false;"> # 启用主动健康检查(需nginx plus或开源版1.11.5+ with http_healthcheck_module)
health_check interval=3 passes=2 fails=2;
match https_ok {
status 200;
header Content-Type = "text/plain";
}
}
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
location / {
proxy_pass https://ssl_offload_pool; # 注意这里用https://,因专机监听443
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 若专机需验证客户端证书,加这行:
# proxy_ssl_verify on;
}
}}
注意:proxy_pass指向https://ssl_offload_pool意味着Nginx到专机这段仍是HTTPS,专机需自己配置SSL证书并监听443——这是典型的“两级SSL终止”结构,专机完成解密后再以HTTP转发给真正业务服务器。











