proxy_ssl_ciphers专门控制Nginx作为反向代理与后端HTTPS服务器建立TLS连接时的加密套件,仅在含proxy_pass https://的location或server块中生效,需配合proxy_ssl_protocols、proxy_ssl_ecdh_curve等指令协同作用。
proxy_ssl_ciphers
专门控制 Nginx 作为反向代理时,与后端 HTTPS 服务器(即 upstream)建立 TLS 连接所用的加密套件。它不干预客户端到 Nginx 的通信(那是
的职责),只影响回源链路的安全强度和兼容性。
明确配置位置与生效条件
该指令必须出现在
或
块中,并且与
处于同一作用域内,否则无效。常见错误是把它写在
块顶层——它不继承,也不跨作用域生效。
仅对
生效;若回源走 HTTP,此指令被完全忽略
需配合
(如
)和
(如
)才能完整约束协商过程
若后端使用自签名或过期证书,还需设置
或指定可信 CA:
按后端能力排序套件,兼顾安全与兼容
套件顺序即协商优先级。把满足后端要求的强套件放前面,弱但必要的兼容项放末尾。例如:
后端只支持 TLS 1.2 且要求 ECDHE+AES-GCM:
后端老旧(如旧版 CDN),需启用 RC4-SHA 但又想限制风险:
现代后端支持 ChaCha20-Poly1305(适合移动网络):
验证是否真正生效
光写配置不等于成功协商。建议通过以下方式确认:
在 Nginx 日志中开启
,查找类似
或
的日志行
用
手动测试单个套件能否握手成功
若后端是自有服务,可在其日志或监控中查看实际协商出的 cipher name 和 TLS 版本
宝塔面板用户注意事项
宝塔默认不暴露
类指令的图形界面。若你使用宝塔且需定制回源加密:
不能依赖【SSL】选项卡里的“自定义SSL配置”——那里只影响
(客户端到 Nginx)
必须手动编辑站点配置文件(路径如
),在含
的
块内添加完整
指令集
保存后务必点击【重载配置】或执行
,避免配置未加载
ssl_cipherslocationserverproxy_pass https://...httpproxy_pass https://proxy_ssl_protocolsTLSv1.2 TLSv1.3proxy_ssl_ecdh_curvesecp384r1proxy_ssl_verify offproxy_ssl_trusted_certificate /path/to/ca.pemproxy_ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384";proxy_ssl_ciphers "ECDHE-RSA-AES256-SHA:AES256-SHA:RC4-SHA:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!SRP:!CAMELLIA";proxy_ssl_ciphers "ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-AES256-GCM-SHA384";error_log ... debug;SSL_do_handshake() failedSSL accepted cipher:openssl s_client -connect 后端地址:443 -cipher '套件名'proxy_ssl_*ssl_ciphers/www/server/panel/vhost/nginx/域名.confproxy_pass https://locationproxy_ssl_*nginx -t && nginx -s reload