关于nginx反向代理后Safari浏览器无法访问的问题
环境
LANMP环境,使用nginx代理apache
nginx/1.20.1
Apache/2.4.62
问题
苹果端访问博客请求一直timeout,继而发现safari无法访问网站,但是chrome和其他的浏览器都没有任何问题。
前言
我也不知道为啥,我刚开始找这个问题的时候,咋都搜不到解决方法,各个搜索引擎都找不到,可能是这个问题比较诡异,而且完全不知道什么原因,所以搜索的内容也有问题,最后跑到nginx官网上才找到的。
nginx官方论坛
分析
论坛中的解释就是 “Upgrade”标头不应通过 h2 代理,当使用 nginx 代理启用 HTTP/2 的 Web 服务器时,nginx 使用 HTTP/1.1 获取资源,后端服务器尝试通过发送“Upgrade: h2”标头将其升级到 HTTP/2。
而且在nginx/1.9.12版本就已经有这个问题了,最早发现这个问题是2016年发现的,但是到了今天,nginx这个问题依然存在,总之这个问题并不是因为反向代理导致的,而是nginx本身的问题。
解决方法
就如论坛中的一样可以在反向代理的配置中添加
proxy_hide_header Upgrade;
同样的根据论坛中解释,是因为h2协议代理的问题,但是我的被代理的apache,没有开h2协议,所以也可以使用,下面这个配置nginx,直接指定
proxy_http_version 1.1;
关于nginx反向代理后Safari浏览器无法访问的问题
https://reeskysui.xyz/index.php/archives/32/