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

您好,我在同一台机器上运行多个应用程序,如使用ZOPE应用程序服务器在端口8080上运行的Plone和Tomcat托pipe多个Web应用程序并在端口8081上运行。

我想将所有传入的stream量从运行在端口80上的apache服务器redirect到这些服务器上,这样外部世界将只能看到apache的默认端口80.我尝试了许多configuration来做同样的事情,但是没有一个似乎在为两个服务器,但是,如果我正在configuration其工作完美无瑕。 所以,只有一个configuration正在使用,另一个没有效果。

我的configuration看起来像: Pastebin Link

我也尝试了以下configuration:

<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> 

问题是configuration只适用于任何一个端口而不是两个端口。 例如,如果Plone重写规则在上面,它将优先,其他tomcatconfiguration将不起作用。 单独他们工作顺利。

我怎样才能使他们同时工作的两个服务器(Zope,Tomcat)可能在未来甚至更多。 所以,我可以将所有传入的请求从Apache转移到这些服务器,外部世界应该只看到前面的Apache而不是这些服务器。

这是我为Ploneconfiguration所遵循的链接 。

您不希望具有相同ServerName值的多个VirtualHost块。 相反,您希望每个ServerName都有一个VirtualHost块,并使用RewriteRule的ProxyPass将stream量路由到相应的后端。 这是一个使用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>