应用场景:nginx做proxy_pass反向代理时候,chrome浏览器可以访问,safari浏览器不能访问,出现如下错误:
Safari 浏览器无法打开页面“https: /xxx.com/”。错误是:“cannot parse response" (NSURLErrorDomain: -1017)
先看下网站的头信息:
curl -I https://www.moneyslow.com
HTTP/2 200
last-modified: Fri, 11 Feb 2022 08:27:36 GMT
etag: "25c1c-5d7b9d6ca56bf"
accept-ranges: bytes
content-length: 154652
vary: Accept-Encoding
content-type: text/html
date: Mon, 21 Feb 2022 03:36:57 GMT
server: Apache
再次验证,通过浏览器插件 http/2 and SPDY indicator 我们发现网站通过http2协议进行访问,于是查到相关资料:
https://trac.nginx.org/nginx/ticket/915
大概意思是header中的Upgrade不能通过http2来传递,所以要忽略Upgrade的传输。增加参数:
proxy_hide_header Upgrade; 问题解决。