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

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

今天遇到个玄学问题:同样的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这些基础头显式配置好。

评论0
回复 · 0
还没有回复
微信客服 微信客服