如何将请求从 apache 转移到多个服务器端口(Zope 8080、Tomcat 8081 等)?

如何将请求从 apache 转移到多个服务器端口(Zope 8080、Tomcat 8081 等)?

你好,我在同一台机器上运行多个应用程序,例如 Plone,它使用在端口 8080 上运行的 ZOPE 应用程序服务器,以及托管多个 Web 应用程序并在端口 8081 上运行的 Tomcat。

我想将所有传入流量从运行在端口 80 上的 apache 服务器重定向到这些服务器,以便外部世界只能看到 apache 的默认端口 80。我尝试了许多配置来执行相同操作,但似乎没有一个配置对两个服务器都有效,但如果我单独配置,它就可以正常工作。因此,只有一个配置被使用,另一个配置无效。

我的配置如下:Pastebin 链接

我还尝试了以下配置:

 <VirtualHost *:80>
        ServerName web.url.in
        ProxyPreserveHost On
        ProxyPass /MNCD2016 http://web.url.in:8081/MNCD2016
        ProxyPassReverse /MNCD2016 http://web.url.in:8081/MNCD2016
        RewriteEngine on
        RewriteRule ^/$ http://web.url.in/MNCD2016
    </VirtualHost>

    <VirtualHost *:80>
        ServerName web.url.in
        ProxyPreserveHost On
        ProxyPass / http://web.url.in:8080/
        ProxyPassReverse / http://web.url.in:8080/
        RewriteEngine on
        RewriteRule ^/$ http://web.url.in/ckpw
    </VirtualHost>

问题是配置只对其中一个端口有效,而不是对两个端口都有效。例如,如果 Plone 重写规则位于上方,它将优先,而另一个 tomcat 配置将不起作用。单独来看,它们运行顺畅。

我如何才能让它们同时在两个服务器(Zope、Tomcat)上工作,将来可能会更多。这样,我可以将来自 apache 的所有传入请求转移到这些服务器,外部世界应该只会看到前端的 apache,而不是这些服务器。

这是关联我遵循了 Plone 配置。

答案1

您不希望有多个具有相同 ServerName 值的 VirtualHost 块。相反,您希望每个 ServerName 都有一个 VirtualHost 块,并使用 ProxyPass 或 RewriteRule 将流量路由到适当的后端。以下是使用 ProxyPass 的示例:

<VirtualHost *:80>

  ServerName web.url.in

  ProxyPreserveHost On
  ProxyRequests Off
  ProxyVia On

  ProxyPass /MNCD2016/ http://web.url.in:8081/MNCD2016
  ProxyPassReverse /MNCD2016/ http://web.url.in:8081/MNCD2016

  ProxyPass / http://web.url.in:8080/
  ProxyPassReverse / http://web.url.in:8080/

</VirtualHost>

相关内容