nginx proxy post 丢失参数/body 怎么解决(1) ?

yufei       9 小时, 24 分钟 前       19

如果你用 Nginx 反向代理了一层,而且你的反向代理是抄过来的,如果 GET 请求正常,但是 POST 请求丢失参数,丢失 body 那么可能是下面的原因造成的:

proxy_set_header Connection "upgrade";
proxy_set_header Upgrade $http_upgrade;

这两句有什么问题呢?

  1. proxy_set_header Upgrade $http_upgrade 这句话的意思是按照客户端请求来,没问题,但是
  2. proxy_set_header Connection "upgrade" 则始终开启 WebSocket。

解决办法如下

  1. 首先在 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 已经存在,把这个删了就行,说明其它网站配置已经加过这个了

目前尚无回复
简单教程 = 简单教程,简单编程
简单教程 是一个关于技术和学习的地方
现在注册
已注册用户请 登入
关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2022 简单教程 twle.cn All Rights Reserved.