如果你用 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
已经存在,把这个删了就行,说明其它网站配置已经加过这个了
目前尚无回复