使用Nginx 反代HTTPS 遇到502、403 的问题 – 以反代cloudflare为例

(网站-反向代理-先添加一个代理后,修改conf文件)

如下直接通过宝塔进行反代产生的配置文件:

location /
{
proxy_pass https://www.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_redirect off;
add_header X-Cache $upstream_cache_status;
#Set Nginx Cache
add_header Cache-Control no-cache;
expires 12h;
}

访问后基本上就是502、403的状态码
但把上述的

proxy_pass https://www.example.com;

改为http://即可,原因自然是走了http的80端口,不是https的443端口
但如果开启了强制https跳转,此方法就没有效果了

如Cloudflare中,强制HTTPS选择仅支持单独为一个站点设置、或为账号下的全部站点设置,而页面规则免费账号也仅有3条,就算足够还得一条一个站点,着实麻烦。同时此方法也需要将SSL设置为关闭或灵活,若使用严格则也无效果。

通过一番搜索找到如下方法:
添加配置:

proxy_ssl_name www.example.com;
proxy_ssl_server_name on;
proxy_redirect off;

即可,www.example.com为目标站点,其实就是加了一层SNI头。

简单理解(可能有偏差):HTTP服务器要判断请求对应的网站是根据HOST头判断的,而HTTPS需要与通信双方校验SSL证书的可信度,服务端需要先返回对应的SSL证书,而服务端判断到底返回哪个网站的证书便是需要SNI头,之前我们没有设置相关的SNI信息,当然不会代理成功。

本站源码及教程等属于虚拟可复制资源,用户一旦赞助下载不接受任何形式的退款要求,平台上所有源码不拥有任何权利,其版权归原著者拥有。任何单位或个人认为本网页内容涉嫌侵犯其合法权益,请及时联系客服移除相关涉嫌侵权的内容。平台上关于作者或其发布的相关内容均由作者自行提供,作者需依法对其提供的任何信息承担全部责任,本平台不对此承担任何法律责任。
虎社精品源码库 » 使用Nginx 反代HTTPS 遇到502、403 的问题 – 以反代cloudflare为例