Apache-2.2

Apache / Glassfish 集成

  • January 15, 2012

所以我目前有一個 glassfish 3.1 伺服器和一個 apache 2.2 伺服器在一個盒子上執行。但是,我試圖通過 apache 伺服器將一些流量路由到 glassfish 伺服器,以隱藏非標準埠 8080,8181。我還在 apache 伺服器上提供了靜態內容。我已經進行了一些搜尋並閱讀了幾個談論這樣做的範例,但是我對 apache 真的很陌生,而且我不了解 virtualhost 和 mod_proxy 的東西。任何幫助理解這些,以及如何完成我想做的事情都會很棒。

編輯

根據 Shane 的範例,我嘗試了以下操作。

<VirtualHost *:80>
   ServerName forum.mydomain.com
   # any logging config, etc, that you need
   ProxyPass / http://127.0.0.1:8080/forum/
   ProxyPassReverse / http://127.0.0.1:8080/forum/
</VirtualHost>

但是現在我所有的流量都流向了http://127.0.0.1:8080/forum/並且由於某種原因所有的圖像都失去了。所以讓我更好地解釋我的情況。我有一個提供靜態頁面的 apache 伺服器,這些頁面是從 mydomain.com 訪問的。比我有一個論壇,它在我的 glassfish 伺服器上作為網路應用程序執行,它們在 mydomain.com:8080/forum/ 上提供服務,我想做的是讓 forum.mydomain.com 轉到 mydomain.com:8080/ forum/ 但對使用者隱藏埠 8080。讓我知道你的想法。

編輯第 2 部分

因此,由於我上次的嘗試沒有奏效,我決定嘗試 Shane 範例的另一種偏差,所以我嘗試了以下方法。

<VirtualHost *:80>
   ServerName mydomain.com
   ServerAlias subdomain.mydomain.com
   DocumentRoot "/usr/local/apache/htdocs"

   <Location /forum>
      ProxyPass http://127.0.0.1:8080/forum/
      ProxyPassReverse http://127.0.0.1:8080/forum/
   </Location>
</VirtualHost>

但這也不起作用,現在如果我點擊 mydomain.com,它會將我帶到 mydomain.com//forums/list.page 但它是 404 錯誤(我認為這很奇怪,因為它顯然到達了 glassfish 伺服器,因為它重新路由到 list.page)。但是,如果我訪問 subdomain.mydomain.com,它會將我帶到我的普通靜態網頁。我覺得我必須靠近,但我只是不確定出了什麼問題。在此範例中,我希望 mydomain.com 和 subdomain.mydomain.com 將我帶到我的靜態頁面,並且 mydomain.com/forum/ 將我帶到 glassfish 上的論壇應用程序。

編輯第 3 部分決賽?

所以我終於得到了我想要的路由,但由於某種原因,論壇缺少所有圖像。我最終做了以下事情。

NameVirtualHost *:80

<VirtualHost *:80>
   ServerName www.mydomain.com
   ServerAlias subdomain.mydomain.com mydomain.com
   DocumentRoot "/usr/local/apache/htdocs"

</VirtualHost>


<VirtualHost *:80>
   ServerName forum.mydomain.com
   # any logging config, etc, that you need
   ProxyPass / http://127.0.0.1:8080/forum/
   ProxyPassReverse / http://127.0.0.1:8080/forum/
</VirtualHost>

現在我只需要弄清楚圖像問題。. .

基本上,這些ProxyPass指令可以使用來自不同 HTTP(或 AJP)伺服器的內容向某個位置提供請求。

這是一個範例配置,其中包含可能有助於澄清的註釋:

# We'll call this your existing vhost:
<VirtualHost *:80>
   ServerName example.com
   ServerAlias www.example.com
   DocumentRoot /path/to/www/
   # other existing config
   # Let's say you want to serve http://example.com/glassfishapp from the 8080 listener:
   <Location /glassfishapp>
       ProxyPass http://127.0.0.1:8080
       ProxyPassReverse http://127.0.0.1:8080
   </Location>
</VirtualHost>

# Now, let's say there's a whole domain you want to serve from the 8181 listener:
<VirtualHost *:80>
   ServerName glass.example.com
   # any logging config, etc, that you need
   ProxyPass / http://127.0.0.1:8181/
   ProxyPassReverse / http://127.0.0.1:8181/
</VirtualHost>

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