【BUG】Nginx使用upstream后端接口报 400

增加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/ ;
}
相关推荐
在角落发呆6 小时前
工具配置备份步骤:从手动备份到自动化方案
运维·windows·自动化
百度一下吧7 小时前
Nginx 使用手册:从安装配置到实战部署
运维·nginx
JeJe同学8 小时前
Docker镜像导入、容器启动
linux·运维·docker
回眸&啤酒鸭8 小时前
【回眸】自动化白盒测试落地实战指南
运维·自动化·log4j
闲云野鹤在人间8 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
资料库0110 小时前
Linux 8个常见运维故障排查
java·linux·运维
机核研创社11 小时前
睡裤明橡筋自动化选型指南与落地四步走
运维·自动化
志栋智能11 小时前
超自动化运维,告别复杂系统的新范式
运维·自动化
零基础12311 小时前
Ubuntu 常用命令汇总
linux·运维·开发语言
Android系统攻城狮11 小时前
Linux Gstreamer深度解析之gst_audio_sink_get_type调用流程与实战(六十五)
linux·运维·服务器·音视频·gstreamer音视频·音视频进阶·gstreamer音视频进阶