Mod-Proxy

用於在單個主機上執行多個應用程序的 Apache/Glassfish 配方

  • July 2, 2011

我正在嘗試設置 Apache + Glassfish,以便我可以訪問同一物理主機上的兩個不同的 web 應用程序,由 URL 中的主機名區分。

所以如果我訪問http://host1.com,我會得到app1. 如果我訪問http://host2.com,我會得到app2. host1並且host2都解析到相同的IP地址。

使用本指南,我已經能夠使用 mod_proxy 和 Glassfish 虛擬伺服器以基本方式進行此工作。但是使用者仍然需要為其中一個應用程序指定上下文根,即.http://host1.com/app1

如何進行設置,以便兩個應用程序在各自的 URL 中顯示為“根”?

我需要兩個單獨的 Glassfish 域嗎?

這是我正在使用的 apache 配置:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/app1
    ProxyPassReverse / http://localhost:8080/app1
    ServerName host1.com
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/app2
    ServerName host2.com
</VirtualHost>

我很接近。這是最終的工作:

創建第二個域:

  • $ asadmin create-domain –portbase 5000 –profile developer mydomain
  • $ asadmin 啟動域 mydomain

將這兩個應用程序部署到各自域中的上下文根。您通過提供管理埠來指定域:

  • $ asadmin deploy –contextroot “/” target/app1.war # domain1
  • $ asadmin deploy –contextroot “/” –port 5048 target/app2.war # mydomain

新域將在埠 5080 上執行,因此配置 mod_proxy 以使用它:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
    ServerName host1.com
</VirtualHost>

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://localhost:5080/
    ProxyPassReverse / http://localhost:5080/
    ServerName host2.com
</VirtualHost>

引用自:https://serverfault.com/questions/286330