【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/ ;
}
相关推荐
Linux运维技术栈15 分钟前
如何避免绕过CDN的攻击?基于 CDN 回源请求头鉴权的防御实操与安全性剖析
nginx·安全·cdn
Huangjin007_23 分钟前
【Linux 系统篇(二十一)】进程(九):进程等待 wait/waitpid、status状态参数
linux·运维·服务器
螺蛳粉 螺蛳粉1 小时前
mysql的备份与恢复
linux·运维·数据库·mysql
可乐鸡翅yeah_1 小时前
混合内容 Mixed‑Content 安全策略,HLS HTTPS 页面加载 HTTP 资源排错实战
运维·ffmpeg·音视频·媒体·m3u8
曦夜日长2 小时前
Linux系统篇,进程概念(四):内核链表的深度理解、进程优先级的底层理解
linux·运维·服务器·php
小葱运维3 小时前
日志规范(K8s 结构化日志)
运维·开源·云计算
杨云龙UP4 小时前
DB2 HADR 主备切换实战:SQL1639N 认证问题、备库只读与双向 Takeover
linux·运维·数据库·db2·主备切换·角色互换
吴声子夜歌4 小时前
Shell编程实例——bash的配置与自定义(二)
linux·运维·shell
Lsetea4 小时前
OpenSSL快速生成域名证书:含SAN的自签命令、验证与排错
nginx·https·ssl证书·openssl·自签证书
Dovis(誓平步青云)4 小时前
突破 32 位瓶颈:64 位 XID 如何化解事务号回卷危机
运维·服务器·人工智能·docker·容器