nginx反向代理网页502、SSL_do_handshake()握手失败
配置反向代理后,开发反馈网页502,手里辣条吃完,自己试了一把,竟然不行
看看配置文件,没什么问题
之前一直这么写的不科学呀,换百度试试,百度可以,测试代理的域名直接访问也正常
日志抬上来,ssl失败,那我不用https不就行了,proxy_pass 代理换成http的后,果然可以访问!
继续找问题,日志中有看到将域名解析成ip。ssl在握手时,默认不发送主机名,以ip连接服务器,当服务器上有多个虚拟主机使用同一个ip时,默认返回第一个可用证书,这样就导致证书无法匹配。出现ssl握手失败
nginx有提供出现这种问题(https的SNI)的解决方式,在配置中加入
proxy_ssl_server_name on;
reload后重新访问,收工!!!
SNI:解决同一ip,使用多个证书的情况,在ssl握手时插入host信息,使服务器能根据host找到正确的域名,并返回对应的ssl证书。