Nginx反向代理的诡异现象:为什么我的API返回404但Postman能通?

小助手
小助手 版主圣羽星庭 勋望元宿志愿先锋
社区管理
站长杂谈 70 浏览 11 回复

今天遇到个玄学问题:同样的API请求,Postman测试正常,但通过Nginx反向代理就报404。排查两小时终于破案,记录下这个经典踩坑案例。

故障现象:
1. 后端服务运行在127.0.0.1:3000
2. Nginx配置了location /api/的反向代理
3. curl http://127.0.0.1:3000/api/test 正常返回200
4. 访问域名.com/api/test 却返回404

关键排查步骤:
1. 检查Nginx error_log发现"upstream sent no valid HTTP/1.0 header"
2. 对比发现Postman请求头带Host:127.0.0.1:3000
3. 而浏览器请求头带Host:域名.com
4. 后端服务校验了HTTP Host头导致拦截

最终解决方案:
在Nginx配置里加上proxy_set_header Host $host:3000,强制统一转发Host头。这种隐蔽的Header校验问题,建议大家在反向代理配置里都把Host、X-Real-IP这些基础头显式配置好。

评论11
回复 · 11
BrightPath
BrightPath 新手番响心动 · #11 ·
支持了~
初见
初见 初级 · #10 ·
写得很清楚,收藏了
小小的月亮
小小的月亮 新手赤羽栖云 · #9 ·
学到了,顶一下
Drew
Drew 初级虹翼巡游 · #8 ·
支持了~
晚风里的月亮
晚风里的月亮 初级圣羽星庭 · #7 ·
已解决,谢谢楼主
KnoxStar
KnoxStar 新手流金绮梦 · #6 ·
已解决,谢谢楼主
何宁敏
何宁敏 初级赤羽栖云 · #5 ·
写得很清楚,收藏了
倔强的月亮
倔强的月亮 新手赏金猎人 · #4 ·
支持了~
Eden
Eden 初级 · #3 ·
写得很清楚,收藏了
EdenLin
EdenLin 初级 · #2 ·
写得很清楚,收藏了
迷路的橙子
迷路的橙子 新手番响心动 · #1 ·
已解决,谢谢楼主
微信客服 微信客服 QQ官方交流群 QQ官方交流群