Nginx使用upstream后端接口报 400
作者:旅途开发日记
本文主要介绍了Nginx使用upstream后端接口报 400,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
upstream模块介绍
Nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass, memcached_pass和grpc_pass。
gx_http_upstream_module模块允许Nginx定义一组或多组服务组,使用的可以通过proxy_pass代理方式把网站的请求发送到事先定义好的对应upstream组的名字上。upstream模块可以实现负载均衡,而且在一个节点故障的时候,配置了upstream时可以自动切换到正常工作的节点。
增加Nginx配置后:
upstream data_server {
server 192.168.1.86:20001;
}原因:
- 直连后端(如 http://192.168.1.86:18295/xxx),浏览器或 Postman 自动将 Host 设为 192.168.1.86:18295,后端能识别。
- 走 Nginx,如果不做特殊配置,Nginx 默认将 Host 设为 upstream 的名字(即 data_server)。后端收到 Host: data_server,发现这不是一个合法的域名或 IP,直接报错 400。
解决方法:
在 location 中强制传递真实的 Host 给后端。
location /data/ {
# 添加这一行,将客户端请求的原始 Host 传递给后端
proxy_set_header Host $host;
# 或者,如果后端服务监听的是特定端口且依赖端口,可以使用:
# proxy_set_header Host $host:$server_port;
# ... 其他配置
proxy_pass http://data_server/ ;
}到此这篇关于Nginx使用upstream后端接口报 400的文章就介绍到这了,更多相关Nginx使用upstream报 400内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
