【问题标题】:unable to proxy requests to server from nginx无法将请求从 nginx 代理到服务器
【发布时间】:2019-06-20 05:40:05
【问题描述】:

我正在尝试通过 nginx 将 HTTP 请求代理到在某个 IP 和端口上运行的应用程序服务器。这是我在 nginx 中使用的配置来实现这一点:

server {
    location /api/v1/ {
        proxy_pass http://myserver:9191/api/v1/;
    }
}

我将 nginx 作为 docker 容器运行,监听端口 4000 上的请求。现在,当我像这样向我的 nginx 服务器发出请求时

http://127.0.0.1:4000/api/v1/ping

我收到 404 错误。日志显示此消息:

2019/06/20 05:33:59 [error] 8#8: *1 open() "/usr/share/nginx/html/api/v1/ping" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /api/v1/ping HTTP/1.1", host: "127.0.0.1:4000"

为什么 nginx 没有将我的请求代理到应用服务器?我应该在我的 nginx 配置文件中修复什么才能成功代理。

【问题讨论】:

  • 1) 查看您的docker-compose 文件,查看目录映射会很有帮助,2) 如果您尝试访问端口 4000,您在哪里基于此行:proxy_pass http://myserver:9191/api/v1/; -- 你在使用upstream {} 块吗?端口 9191 来自哪里?谢谢

标签: nginx


【解决方案1】:
location ^~ /api/v1/ {
    proxy_pass http://127.0.0.1:9191;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    client_max_body_size    1000m;
}

【讨论】:

    【解决方案2】:

    我想出了解决方案,实际上 nginx 的 docker 映像包含一个 default.conf 文件,该文件的配置指向 '/' 路径,这导致它默认为 html 文件夹。

    【讨论】:

      猜你喜欢
      • 2023-04-02
      • 2013-11-14
      • 2020-05-03
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多