nginx配置api代理无效?

server {

listen 80;

location / {

root /usr/share/nginx/html/dist;

index index.html;

try_files $uri $uri/ /index.html;

}

location ^~ /api/ {

proxy_pass http://localhost:3011/;

}

}

前端代码

void fetch('/api/user/info')

.then((res) => {

console.log(res);

})

.catch((e) => console.log(e));

nginx的日志

172.17.0.1 - - [09/Aug/2023:14:28:27 +0000] "GET /api/user/info HTTP/1.1" 502 559 "http://localhost:81/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36" "-"

为什么/api开头的请求没有走成功代理呢?期望接口会调用http://localhost:3011/api/user/info,现在没代理成功,依然走的是http:localhost:80/api/user/info导致报错?


回答:

你这里的错误状态码是502,意思是访问上游有问题,所以应该是 localhost:3011 不通。

日志里面的IP是172.17.0.1,所以怀疑你的nginx是在容器里面运行的。如果nginx在容器中,在nginx容器内使用localhost只能访问容器内的127.0.0.1。

如果3011这个端口是在容器外,那应该是访问不通的。

你可以试试把localhost:3011这里改成docker宿主机的IP端口。或者nginx容器改为使用host网络。

以上是 nginx配置api代理无效? 的全部内容, 来源链接: utcz.com/p/934744.html

回到顶部