NGINX:使用路径将流量重定向到同一网络上的代理服务器

时间:2019-11-14 03:26:21

标签: nginx nginx-reverse-proxy

问题

截至目前,我想创建一种方法来通过一个处理80端口上的http请求的主服务器链接网络上的所有服务器。

下面是本地计算机的列表。

  • http://192.168.68.128(处理每个应用程序的服务器。)
  • http://192.168.68.129(将请求代理到其他计算机的服务器。)

下面是重定向到本地计算机的路径的列表。

  • http://home.example.com:80/servers-> http://192.168.68.128:80/
  • http://home.example.com:80/code-> http://192.168.68.128:8080/

这里的问题是,每当应用程序重定向用户时,nginx都不会考虑应用程序的路径。例如:

如果我访问http://home.example.com:80/servers,并且服务器应用将我重定向到/auth/login,则该URL不会保持不变。结果网址最终是http://home.example.com:80/auth/login而不是http://home.example.com:80/servers/auth/login。当我尝试访问服务器应用程序时,实际结果在浏览器中引发404错误。

这是我到目前为止的代码: 在此示例中,我没有包含代码应用。

server {

    listen 80;

    server_name 192.168.68.129 home.example.com;

    location /servers/ {
        proxy_pass http://192.168.68.128:80;
    }

}

我尝试过的解决方案

这是我尝试过的一堆不同的东西:

  • 我尝试使用proxy_redirect通过使用正则表达式和普通URL来操纵发送给用户的URL。发生了两件事之一,我听不懂,或者得到了意外的结果。这几乎可以正常工作了,但是最终创建了一个重定向的反馈循环,并使URL的长度超出了预期。
  • 我尝试使用多个位置块来处理应用程序路径和每个应用程序的子路径,例如/auth/login。从长远来看,他们从来没有结束过工作。
  • 我尝试使用正则表达式位置路径来捕获应用程序路径和子路径。无法使其成功运行。

感谢您提供的任何帮助。

0 个答案:

没有答案