2011-12-09 47 views
7

我有一個單一的Apache Tomcat託管在端口2個應用8080 >子域代理傳遞所有指向單個服務器

  • http://mydomain.com:8080/application1
  • http://mydomain.com:8080/application2

我想在它們的前面運行一個apache代理,其行爲如下 >

  • http://mydomain.com/* (apache2) -> http://mydomain.com:8080/application1/* (tomcat)
  • http://subdomain.mydomain.com/* (apache2) -> http://mydomain.com:8080/application2/* (tomcat)

我有現在的問題是2個機具有不同的IP和路由域和子域相對應的最佳。

理想我想apache的代理和2級的應用程序是在同一臺機器上...

任何人都可以用踢屁股的DevOps技能幫助?

回答

18

除了@Jon Lin的回答,還可以考慮使用ProxyPassReverse,以防萬一您的應用程序執行任何重定向。它使Apache對URL的響應正確(關於ProxyPassReverse的更多信息)。它會看起來像這樣:

<VirtualHost subdomain.mydomain.com:80> 
    ProxyPass/http://localhost:8080/application1/ 
    ProxyPassReverse/http://localhost:8080/application1/ 
</VirtualHost> 

<VirtualHost mydomain.com:80> 
    ProxyPass/http://localhost:8080/application1/ 
    ProxyPassReverse/http://localhost:8080/application1/ 
</VirtualHost> 

我希望它有幫助。

+0

感謝球員......這是有幫助的 – alwinc

+0

它工作,如果我們保持*:80,但在*規則之前添加一個特定的子域? – user3779430

+0

在規則爲我分解之前添加子域 – puk

0

在爲虛擬主機配置mydomain.com(阿帕奇),你需要

ProxyPassMatch ^/(.*)$ http://mydomain.com:8080/application1/$1 

在虛擬主機配置爲subdomain.mydomain.com(阿帕奇),你nede

ProxyPassMatch ^/(.*)$ http://mydomain.com:8080/application2/$1 

這兩個配置文件應該在同一臺機器上,甚至是同一個文件。有關如何設置的一些示例,請參閱VirtualHost Examples