将子域指向其他服务器

我有很多Web应用程序运行在我的服务器上的不同Tomcat实例下,并且我有一个在端口80上运行的Apache实例。

我要configurationApache实例,以便具有子域的传入请求将redirect到相应的服务器。

例如,请求http://wiki.mydomain.com应该redirect到http://localhost:8080

这可能通过configuration虚拟主机?

你可以使用mod_rewrite来做到这一点。 在模块文档的底部有一些重写URL到另一个URL的例子(这些例子都没有非默认端口,但这不应该是一个问题): https : //httpd.apache.org/docs /current/mod/mod_rewrite.html

这是我提出的另一个问题的相同答案 ,但我相信这适用于此。 您使用单词“redirect”,但我真的认为你的意思是你想让公共networking用户访问你的本地主机:8080服务器,这不会通过简单的redirect或URL重写。 这是如何代理连接到您的本地主机:8080服务器,以及其他额外的用法,以及如果你想。

通过Apache2中的mod_proxy ,您可以将不同的path代理到本地主机或服务器可以访问的任何地方,包括在本地networking中(如果您的服务器可以访问它的话)。

为此,您可以使用ProxyPass ( Apache2 Docs for ProxyPass ,这是非常有用的阅读),如下例所示:

 <VirtualHost *:80> ServerName some.example.host.xyz DocumentRoot /var/www/your-document-root Alias /clients/ /var/www/clients/ ProxyPass /clients/ ! ScriptAlias /something-using-cgi/ /var/www/cgi-stuff/ ProxyPass /something-using-cgi/ ! ProxyPreserveHost On ProxyPass / http://localhost:8080/ ProxyPassReverse / http://localhost:8080/ ProxyPass /elsewhere/ http://elsewhere.example.host.xyz:1234/ ProxyPassReverse /elsewhere/ http://elsewhere.example.host.xyz:1234/ </VirtualHost> 

您需要确保您设置了代理安全性,以便外部用户也不能将您的反向代理用作转发代理。 您可以通过ProxyRequests来执行此操作,正如Apache2官方文档中所述。 我在服务器上这样做的方式是把它放在你的服务器范围的configuration中(你应该自己确认这是足够安全的):

 # disables forward proxy ProxyRequests Off