nginx 代理 https,temporarily disabled while SSL handshaking to upstream 出现 502 的情况

本文记录了解决nginx代理HTTPS时遇到502错误的过程。问题由SNI(Server Name Indication)引起,因源服务器支持多个域名和证书。通过openssl实验确认问题,并在nginx配置中添加`proxy_ssl_server_name on;`以解决SSL握手错误,实现正常代理转发。
摘要由CSDN通过智能技术生成

网上看到这篇文章,这里记录一下。

前言

        前段时间我们官网要做一个活动页面, 但是活动页面是用另一个活动页域名, activity.example.com, 但是运营人员需要对外展示的落地页是以官网 www 的域名来处理,所以这时候就会需要在官网的 nginx 指向那边进行页面的代理转发:

1
2
3
4
location  /promo/student-discount {
    resolver 8.8.8.8;
    proxy_pass https://activity.example.com/promo/student-discount;
}

        但是实测的过程中, 却发现代理转发的时候,报了一个 502 的错误

1
2
2022/08/16 11:58:22 [error] 2293#0: *213338285 SSL_do_handshake() failed (SSL: error:1408F10B:SSL routines:ssl3_get_record:wrong version number) while SSL handshaking to upstream, client: 14.xxx.1.86, server: www.example.com, request: "HEAD /promo/student-discount HTTP/1.1", upstream: "https://13.xxx.xxx.101:443/promo/student-discount", host: "www.example.com"
2022/08/16 11:58:22 [warn] 2293#0: *213338285 upstream server temporarily disabled while SSL handshaking to upstream, client: 14.xxx.1.86, server: www.example.com, request: "HEAD /promo/student-discount HTTP/1.1", upstream: "https://13.xxx.125.101:443/promo/student-discount", host: "www.example.com"

        看了一下,应该是 nginx 在进行代理请求的时候,就报错了, 应该是 ssl 的握手的错误 SSL_do_handshake()

SNI介绍

        SNI(Server Name Indication)是为了解决一个服务器使用 多个域名 和证书的TLS扩展,主要解决一台服务器只能使用一个证书的缺点。

        开启SNI后,允许客户端在发起SSL握手请求时就提交请求的域名信息, 负载均衡 收到SSL请求后,会根据域名去查找证书,如果找到域名对应的证书,则返回该证书;如果没

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值