在尝试使用 Nginx 反向代理使用了 Cloudflare 的站点时,报错 502 Bad Gateway
,Nginx 的设置很简单,差不多就如下
proxy_pass https://CloudflareIP;
proxy_set_header Host $host;
奇怪的是,这样的配置对大部分网站都没问题,只有 Cloudflare 会报错。于是,查看 Nginx 日志,发现如下错误:
SSL_do_handshake() failed (SSL: error:14094410:SSL routines:ssl3_read_bytes:sslv3 alert handshake failure:SSL alert number 40) while SSL handshaking to upstream
一番搜索后,有了办法,只需要在之前的基础上添加如下设置:
proxy_ssl_server_name on;
via.https://www.zhiin.net/YwWQ4TWGHX/
参考:
https://stackoverflow.com/questions/38375588/nginx-reverse-proxy-to-heroku-fails-ssl-handshake
https://community.cloudflare.com/t/reverse-proxy-infront-of-cloudflare/33972
https://github.com/alibaba/tengine/issues/1014
还是502,一样的错误提示
成功了。搞了半天只需要一句最关键的 proxy_ssl_server_name on; 就行了。
我试了也是,暂时没搜到解决办法