You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server 2019上Nginx 1.25.2 SSL握手报错(10054)求助

问题分析与排查方案

可能原因

  1. 配置生效范围错误:proxy_ssl_protocols 仅配置在 server 块,未覆盖实际处理反向代理的 location 块,导致规则未生效。
  2. 密码套件不匹配:Nginx 1.25.x 对 TLSv1.2 的默认密码套件与 1.17.x 存在差异,即使指定了 TLSv1.2,上游服务器仍不支持新版默认套件。
  3. SNI 缺失:上游服务器依赖 SNI(Server Name Indication)识别站点,新版本 Nginx 未自动发送 SNI 或相关配置未开启。
  4. SSL 扩展兼容性:新版 Nginx 默认启用 ALPN 等 SSL 扩展,上游服务器不支持该扩展导致握手中断。

排查步骤(仅用 curl)

1. 验证上游服务器的 TLS 兼容性

通过 curl 直接发起请求,确认上游对 TLSv1.2 的支持情况及可用密码套件:

curl -X POST https://z.z.z.z:443/abc/abc.asmx --tlsv1.2 -v

观察输出中的握手细节(如 SSL connection using TLSv1.2 / xxx),记录成功协商的密码套件。

2. 模拟 Nginx 的请求头

Nginx 反向代理会传递原始请求的 Host 头,用 curl 模拟该场景,验证上游是否接受:

curl -X POST https://z.z.z.z:443/abc/abc.asmx --tlsv1.2 -H "Host: y.y.y.y:443" -v

若此请求成功,说明上游依赖正确的 Host 头;若失败,需在 Nginx 配置中确保 proxy_set_header Host $host:$server_port;。

3. 调整 Nginx 配置(针对已发现的问题)

确保代理 SSL 规则生效

将配置放在对应的 location 块中,覆盖具体代理逻辑:

location /abc.asmx {
    proxy_pass https://z.z.z.z:443/abc/abc.asmx;
    proxy_ssl_protocols TLSv1.2;
    # 填入 curl 测试成功的密码套件
    proxy_ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256";
    # 开启 SNI(若 curl 测试发现需要)
    proxy_ssl_server_name on;
    # 禁用 ALPN(若上游不支持)
    proxy_ssl_alpn off;
    # 传递正确的 Host 头
    proxy_set_header Host $host:$server_port;
}

启用 debug 日志定位细节

修改 Nginx 的日志级别为 debug,重启后查看完整握手过程:

error_log logs/error.log debug;

日志会显示 SSL 握手时使用的协议、密码套件、SNI 信息等,可直接定位不兼容环节。

4. 排除系统层面限制

检查 Windows Server 2019 的防火墙/安全软件,确认升级 Nginx 后未新增出站规则阻止 TLS 握手;也可通过 curl 访问其他 HTTPS 站点(如 curl https://www.google.com --tlsv1.2 -v)验证本地 TLS 功能正常。

内容的提问来源于stack exchange,提问作者Peter Truong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 18:21:21