curl报的错误如下
curl: (92) Invalid HTTP header field was received: frame type: 1, stream: 1, name: [upgrade], value: [h2,h2c]
用浏览器的话也会报连接错误
造成这种问题的原因是反向代理的上游开启了HTTP/2,然后nginx通过HTTP/1.1与上游连接,这样上游返回的报文中就会添加Upgrade头来要求升级到HTTP/2连接。
知道了原因就好解决了,可以采取以下方法
- 关闭上游服务器的HTTP/2
-
使用HTTP/2或H2C与上游连接
nginx不支持
-
过滤Upgrade头
proxy_hide_header Upgrade;