Nginx upstream配置后为什么请求没分发到后端服务?

博主佳佳 阅读 4

我用 Nginx 做反向代理,配了 upstream,但访问的时候一直报 502,好像根本没把请求转发给后端。

后端服务明明在本地跑着,curl http://localhost:3001 能正常返回,但通过 Nginx 就不行。是不是 upstream 写错了?

upstream backend {
    server localhost:3001;
}

server {
    listen 80;
    location / {
        proxy_pass http://backend;
    }
}
我来解答 赞 0 收藏
二维码
手机扫码查看
1 条解答
爱学习的立顺
502错误通常意味着Nginx无法成功连接到后端服务,这里有几种常见原因和解决方法。首先检查upstream配置里的server地址是否正确,虽然你用了localhost但建议改成127.0.0.1试试。

再看看后端服务有没有绑定正确的IP,有时只监听了127.0.0.1而不是所有接口。另外记得在nginx.conf里加上这些基础设置:

location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
}


还有个容易忽略的点是防火墙设置,确保3001端口是开放的。如果还是不行,查下Nginx错误日志,里面通常能找到具体原因。遇到这种问题真是让人头大,不过一步步排查总能解决的。
点赞
2026-03-30 14:03