Nginx 的 proxy_pass 导致请求后端时跳转到 127.0.0.1 怎么办?

2021-05-19 18:17:48 +08:00
 mekingname

我写了一个前后端分离的网站,Nginx 与后端是放在同一个 Docker 容器的,因此 Nginx 可以直接使用http://127.0.0.1:8000/api/xxx来访问后端。

我编写了如图所示的 Nginx 配置文件:

网站部署在http://123.45.67.89上面。当我访问http://123.45.67.89的时候,确实可以正确打开首页。但是前端再请求后端接口的时候,访问 http://123.45.67.89/api/xxx 的时候,浏览器会自动跳转到http://127.0.0.1:8000/api/xxx,导致前端无法访问后端。

请问这个问题出在哪里,应该怎么解决。

1085 次点击
所在节点    问与答
10 条回复
leoleoasd
2021-05-19 18:25:15 +08:00
浏览器访问到的是 127.0.0.1:8877?
并且没看到别的请求,应该不是跳转过去的?(找找有没有 301/302 的响应)
carity
2021-05-19 18:39:29 +08:00
前端代码里面请求接口你是怎么写的 url
ysc3839
2021-05-19 18:43:29 +08:00
感觉是你前端写错 URL 了,并不是跳转过去的。
chinvo
2021-05-19 18:45:39 +08:00
Google proxy_pass set host header
zhs227
2021-05-19 18:52:40 +08:00
header 没传过去。
zhs227
2021-05-19 18:53:53 +08:00
呀,不对,感觉是你前端工程里把地址和端口写死了。
cxh116
2021-05-19 19:11:30 +08:00
看配置已经设置了 host header,问题在于后端只允许 127 host 访问,要后端排查是框架还是应用服务器的问题。
mekingname
2021-05-20 10:23:14 +08:00
@carity axios.get('/api/xxx')
canbingzt
2021-05-20 15:31:27 +08:00
容器里的 127.0.0.1 是指容器,如果是宿主的话,一般是 172.17.0.1
mekingname
2021-05-21 10:35:04 +08:00
@canbingzt 我加了 --network host

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/777963

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX