Nginx 通过upstream反向代理报 400 Bad Request

网友投稿 547 2022-09-22

Nginx 通过upstream反向代理报 400 Bad Request

通过nginx做反向代理,配置如下:

upstream test-interface { server 192.168.12.2 8080;}server { listen 12345; server_name localhost; location / { proxy_pass proxy_1.1; proxy_set_header Connection ""; }}

现象:返回的为空。

解决方法:设置host值

location / { proxy_pass proxy_set_header Host $host; #或者 proxy_set_header Host $ proxy_1.1; proxy_set_header Connection "";}

搜索该问题时,了解到:如果upstream转发域名时也会遇到这个问题,描述如下:

upstream test-interface { server abc.test.cn;}server { listen 12345; server_name localhost; location / { proxy_pass proxy_1.1; proxy_set_header Connection ""; }}

所出现的现象就是,从 192.168.1.10 或者 192.168.1.11 请求 192.168.1.11 的 12345 端口,都会返回 400。

最初给请求头加上了 Host ,比如 ​​proxy_set_header Host $host;​​​ 或者 ​​proxy_set_header Host $Nginx 12345 端口转发的请求,和直接在 Nginx 服务器上调用外网接口的请求。

在比对了之后发现,能调用成功的请求头中, Host 就是接口的域名地址,而调用失败的请求头中,该字段都是 IP 或者其他什么东西

解决方法一:设置静态Host

upstream test-interface { server abc.test.cn;}server { listen 12345; server_name localhost; location / { proxy_pass proxy_1.1; proxy_set_header Connection ""; proxy_set_header Host abc.test.cn; }}

解决方法二:不实用upstream,直接proxy_pass 域名

server { listen 12345; server_name localhost; location / { proxy_pass proxy_1.1; proxy_set_header Connection ""; }}

​​https://priesttomb.github.io/%E6%8A%80%E6%9C%AF/2020/05/05/nginx-400-error-about-host/​​

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:三季度净利16亿元,携程为实现疫情后首季度盈利都做了什么?
下一篇:Linux命令--less(查看日志文件内容,排查问题)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~