关于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/
本文作者 明关
发布时间 2025-04-25
许可协议 CC BY-NC-SA 4.0
发表新评论