增加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/ ;
}