如果你用 Nginx 反向代理了一层,而且你的反向代理是抄过来的,如果 GET 请求正常,但是 POST 请求丢失参数,丢失 body 那么可能是下面的原因造成的:
proxy_set_header Connection "upgrade"; proxy_set_header Upgrade $http_upgrade;
这两句有什么问题呢?
proxy_set_header Upgrade $http_upgrade这句话的意思是按照客户端请求来,没问题,但是proxy_set_header Connection "upgrade"则始终开启 WebSocket。
解决办法如下
- 首先在
server {}平级添加一句
$connection_upgrade {
default upgrade;
'' close;
}
然后将 proxy_set_header Connection "upgrade" 改成 proxy_set_header Connection $connection_upgrade;
大概的网站配置如下
$connection_upgrade {
default upgrade;
'' close;
}
server
{
listen 80;
# 其它配置
location / {
# 其它配置
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
如果提示 $connection_upgrade 已经存在,把这个删了就行,说明其它网站配置已经加过这个了
目前尚无回复