Nginx 反向代理到已重定向的外部 URL

Nginx 反向代理到已重定向的外部 URL

下午好,先生们,

我当前的设置是一个单一站点,我们称之为http://production.com,它由 Nginx 在端口 80 上作为静态缓存提供服务,而 Apache 在后台在端口 8080 localhost 上提供服务,其实没什么特别的,而且运行得很好。

我现在要做的是让 URLhttp://production.com/foobar包含来自外部 URL 的数据,我们将其称为http://internal.com/

我遇到的问题是,如果我浏览到http://internal.com/我被自动重定向到http://www.internal.com/forum/forum.php因为这是一个 vBulletin 论坛,它有自己的内部重定向,而不是基于站点 URL 变量。当然,如果我尝试通过 Nginx 代理它,也会发生同样的事情,我只是被“转发”到 ../forum/forum.php URL。

那么,我该如何解决这个问题呢?有没有办法让重定向以某种方式不可见,并且不让 Nginx 以某种方式在地址栏中实际跟随它?基本上是一个没有使用实际 iframe 的 iframe。:-)

这是我现在正在尝试的 Nginx 代码片段:

    location /foobar {
            proxy_pass      http://internal.com/;
            proxy_redirect  off;
            proxy_set_header        Host $host;
    }

有什么想法吗?提前致谢。

答案1

我发现在这种情况下你基本上有两种不同的选择。

  1. 正如 Andrei Mikhaltsov 指出的那样,您可以使用ngx.lua模块并在您将收到的任何 HTTP 响应上更改代理,这当然可能是一个噩梦。

  2. 您可以对要“转发”到的任何应用程序进行一些更改,在我们的例子中是一个论坛。

在我们的案例中,我们选择了 2 号并基本上将它们放在同一个域下并对论坛做了一些更改。

相关内容