Nginx反向代理遇到的诡异问题!

在前后端分离的程序中,设置反向代理以转发用户请求时,遇到一个问题:POST和PUT请求导致前端报错,后端虽然处理但通信出现问题。经过排查,发现是`proxy_set_header Host $host;`这行配置引起冲突。移除该行后,程序恢复正常运行,同时也能够获取到用户的真实IP。解决方案是注释掉冲突的配置项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所开发的程序是前后端分离的,所以,配置了一个反向代理,将用户的访问转发给后台的程序。这样做以后就会导致获取不到用户真实的IP。所以,从网上查阅资料后增加了一下三行配置。

            proxy_set_header Host $host;
            proxy_set_header X-Real-Ip $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

结果,出现了一个诡异的情况:

前端的get请求还好,一旦发送post, put等请求,就会出错---前端报告后端无响应。但是,仔细检查后发现,后端实际上正常执行了前端的请求,但是,前后端的沟通出问题了。给人的感觉就像见鬼一样,有些请求能正常转发,有些无法转发!

首先想到的是去掉这三行,结果发现程序又正常了。但是,带来的后果是无法获取真实IP。

又经过仔细搜索,发现,有关IP的配置多了一行:proxy_set_header Host $host;

网上说,这一行是不需要的,而且会造成冲突。结果,注释掉这一行后,程序恢复正常,而且,也能获得真实的IP。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值