当前位置: 代码网 > it编程>数据库>Mysql > Nginx使用upstream后端接口报 400

Nginx使用upstream后端接口报 400

2026年04月10日 Mysql 我要评论
upstream模块介绍nginx的负载均衡功能依赖于ngx_http_upsteam_module模块,所支持的代理方式包括proxy_pass, fastcgi_pass, uwsgi_pass,

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内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com