java怎么拦截某个对象
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~