Nginx反向代理的诡异现象:为什么我的API返回404但Postman能通?
今天遇到个玄学问题:同样的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这些基础头显式配置好。
最新打赏

