【问题标题】:Nginx Reverse proxy configNginx 反向代理配置
【发布时间】:2017-03-08 19:14:51
【问题描述】:

我在获取一个简单的配置来使用 nginx 时遇到问题。我有一个托管 docker 容器的服务器,所以 nginx 在一个容器中。因此,让我们调用 url foo.com。我希望 url foo.com/service1 实际上只是在另一个端口上转到 foo.com,所以它实际上会拉动 foo.com:4321foo.com/service2 拉动 foo.com:5432 等等。这是我一直遇到问题的配置。

http {
    server {
        listen 0.0.0.0:80;

        location /service1/ {
            proxy_pass http://192.168.0.2:4321/;
        }

        location /service2/ {
            proxy_pass http://192.168.0.2:5432/;
        }

    }
}

所以服务和 nginx 位于 192.168.0.2。能够做到这一点的首选方法是什么?提前谢谢!

附带说明,这是在 docker 容器中运行的。谢谢!

【问题讨论】:

  • 您可以访问主机服务器上的http://192.168.0.2:4321/http://192.168.0.2:5432/ 吗?
  • 是的,我可以从运行 nginx 的机器上 curl 列出的两个地址和端口,我还可以在这些端口上从本地机器打开页面而不会出现问题。
  • 你能通过 curl http://192.168.0.2:4321/http://192.168.0.2:5432/ 在你的 nginx 容器中得到响应吗?
  • 我认为 OP 创建了低质量的问题并消失了。时间流逝,人们回答或询问更多细节。无济于事,他们只是在浪费时间。有没有关闭此类问题的标志?
  • @AlexanderAzarov,你是新来的吗? :p

标签: nginx reverse-proxy


【解决方案1】:

我认为您应该首先通过删除反向代理配置来检查您的foo.com 是否指向正确的 IP 地址。例如

http {
    server {
        listen 80;
        server_name foo.com;

        location / {
        }
    }
}

然后,如果您的ip 地址已经有一个服务在端口 80 上运行,您应该像我的示例中那样为每个服务指定server_name。 Nginx只能通过server_name来区分哪个服务响应哪个域。

*我猜你忘记了server_name 选项。

【讨论】:

    【解决方案2】:
    http {
        server {
            listen 80;
            server_name foo.com;
    
            location /service1/ {
                proxy_pass http://192.168.0.2:4321/;
            }
    
            location /service2/ {
                proxy_pass http://192.168.0.2:5432/;
            }
    
        }
    }
    

    【讨论】:

    • 这几乎和我的一样。我仍然得到与我发布的结果相同的结果,504 网关超时
    【解决方案3】:

    我猜你的问题与 Nginx 本身无关,而是与 Docker 网络有关。您提供的信息不足以做出详细的结论,但这里有一些建议:

    1. 在运行 nginx 容器的同一主机上运行一个简单的 Docker 容器,然后从该容器内部尝试 curl(我已经看到您的回答,您可以从运行 Nginx 的服务器调用 curl ,但其实不一样)

    2. 例如,如果运行 nginx 容器的服务器是 OSX 或 Windows,它可能会使用具有自己的网络堆栈、IP 地址、路由等的中间 Linux 虚拟机。

    【讨论】:

      【解决方案4】:

      这是我发送到内部 glassfish 的 conf。查看使用proxy_redirect off & proxy_set_header X-NginX-Proxy true;

          #Glassfish
          location /MyService/   {
      
                  index index.html;
      
                  add_header Access-Control-Allow-Origin $http_origin;
      
                  proxy_set_header X-Real-IP $remote_addr;
                  proxy_set_header X-NginX-Proxy true;
                  proxy_ssl_session_reuse off;
                  proxy_set_header Host $http_host;
                  proxy_redirect off;
                  proxy_set_header X-Forwarded-Server $host;
                  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                  proxy_pass http://127.0.0.1:18000/MyService/;
      
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-14
        • 2014-05-01
        • 2017-12-01
        • 2023-04-03
        • 2015-02-12
        • 2020-08-06
        相关资源
        最近更新 更多