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

设计师朝阳 阅读 7

我用 Nginx 做反向代理,配了 upstream,但访问时一直报 502 Bad Gateway。本地后端服务明明是开着的,端口也监听正常。

我试过直接 curl 后端地址能拿到响应,但通过 Nginx 就不行。是不是 upstream 配错了?我的配置如下:

upstream backend {
    server 127.0.0.1:3000;
}

server {
    listen 80;
    location /api/ {
        proxy_pass http://backend/;
    }
}
我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
常青酱~
502一般是Nginx连不上后端服务,你试试这个配置,改了两个地方:

upstream backend {
server 127.0.0.1:3000;
}

server {
listen 80;
location /api/ {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}


主要问题:
1. 去掉proxy_pass最后的斜杠,否则路径会被改写
2. 加上必要的header转发,有些后端服务需要这些头

如果还不行,看下Nginx错误日志:
tail -f /var/log/nginx/error.log

顺便吐槽下Nginx这个斜杠的坑,每次都要踩一次才记得住...
点赞
2026-03-06 14:04