V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
mekingname
V2EX  ›  问与答

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

  •  
  •   mekingname · 2021-05-19 18:17:48 +08:00 · 964 次点击
    这是一个创建于 1074 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我写了一个前后端分离的网站,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,导致前端无法访问后端。

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

    10 条回复    2021-05-21 10:35:04 +08:00
    leoleoasd
        1
    leoleoasd  
       2021-05-19 18:25:15 +08:00
    浏览器访问到的是 127.0.0.1:8877?
    并且没看到别的请求,应该不是跳转过去的?(找找有没有 301/302 的响应)
    carity
        2
    carity  
       2021-05-19 18:39:29 +08:00
    前端代码里面请求接口你是怎么写的 url
    ysc3839
        3
    ysc3839  
       2021-05-19 18:43:29 +08:00
    感觉是你前端写错 URL 了,并不是跳转过去的。
    chinvo
        4
    chinvo  
       2021-05-19 18:45:39 +08:00 via iPhone
    Google proxy_pass set host header
    zhs227
        5
    zhs227  
       2021-05-19 18:52:40 +08:00
    header 没传过去。
    zhs227
        6
    zhs227  
       2021-05-19 18:53:53 +08:00
    呀,不对,感觉是你前端工程里把地址和端口写死了。
    cxh116
        7
    cxh116  
       2021-05-19 19:11:30 +08:00 via Android
    看配置已经设置了 host header,问题在于后端只允许 127 host 访问,要后端排查是框架还是应用服务器的问题。
    mekingname
        8
    mekingname  
    OP
       2021-05-20 10:23:14 +08:00
    @carity axios.get('/api/xxx')
    canbingzt
        9
    canbingzt  
       2021-05-20 15:31:27 +08:00
    容器里的 127.0.0.1 是指容器,如果是宿主的话,一般是 172.17.0.1
    mekingname
        10
    mekingname  
    OP
       2021-05-21 10:35:04 +08:00
    @canbingzt 我加了 --network host
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1174 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 17:56 · PVG 01:56 · LAX 10:56 · JFK 13:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.