簡體   English   中英

Apache Tomcat 配置 - 一台 Apache 服務器和多個 Tomcat 站點

[英]Apache Tomcat Configuration - One Apache Server and Multiple Tomcat Sites


我在為多個 tomcat 站點配置 apache web 服務器時遇到一個問題。
這是我的要求:
1. Apache 網絡服務器 - 單實例
2. 跨 3 個不同的多個 tomcat 實例的相同應用程序(WebApps)
前端服務器和應用服務器都托管在單個服務器上(Solaris)

當我使用特定站點名稱訪問 Apache 服務器時,它應該僅從該 tomcat 站點中獲取應用程序

我在 google 上瀏覽不同網站時嘗試了各種選項,但不幸的是,到目前為止,沒有任何選項可以解決這個問題。

我在 vhost conf 文件和應用服務器上的 workers.properties(Apache 服務器)和 server.xml 中的當前修改如下。

<VirtualHost x.x.x.x:80>

  ServerAdmin webmaster@xxx.com
  DocumentRoot /opt/htdocs/test-1.xxx.com/docs

  ServerName x.x.x.x
  ServerAlias test1-1.xxx.com

:
:
:
</VirtualHost>

<VirtualHost x.x.x.x:80>

  ServerAdmin webmaster@xxx.com
  DocumentRoot /opt/htdocs/test-2.xxx.com/docs

  ServerName x.x.x.x
  ServerAlias test1-2.xxx.com

:
:
:
</VirtualHost>
<VirtualHost x.x.x.x:80>
  ServerAdmin webmaster@xxx.com
  DocumentRoot /opt/htdocs/test-3.xxx.com/docs
  ServerName x.x.x.x
  ServerAlias test1-3.xxx.com

:
:
:
</VirtualHost>

Worker.properties

worker.list=tomcat1,tomcat2,tomcat3

worker.tomcat1.type=ajp13
worker.tomcat1.host=test1-1.xxx.com
worker.tomcat1.port=8009



worker.tomcat2.type=ajp13
worker.tomcat2.host=test1-2.xxx.com
worker.tomcat2.port=48009


worker.tomcat3.type=ajp13
worker.tomcat3.host=test1-3.xxx.com
worker.tomcat3.port=58009

Server.xml - 正如workers.properties 中提到的,每個實例的端口號都不同。這里我在server.xml 中的每個tomcat 實例上修改了主機名。 請假設所有 3 個 tomcat 實例的所有端口號都不同

tomcat-1

<Engine name="Catalina" defaultHost="test1-1.com" jvmRoute="tomcat1">
<Host name="test1-1.com"  appBase="webapps"  
            unpackWARs="true" autoDeploy="true">

<Engine name="Catalina" defaultHost="test1-2.com" jvmRoute="tomcat2">
<Host name="test1-2.com"  appBase="webapps"  
            unpackWARs="true" autoDeploy="true">

<Engine name="Catalina" defaultHost="test1-3.com" jvmRoute="tomcat3">
<Host name="test1-3.com"  appBase="webapps"  
            unpackWARs="true" autoDeploy="true">

問題是,每次當我啟動任何 tomcat 站點時,每次它從第一個 tomcat 服務器(即 test1-1.com)獲取 webapp 時

例如,如果我打開, HTTP:// test1-然后2 /首頁/指數雖然該網站是開放,但它是從“test1-1.com”現場拿起webapps目錄下..

我的要求是-當我打開HTTP:// test1- 2 /首頁/指數,它應該拿起這是對托管網站的tomcat-2即test1-2.com的web應用

請告訴我,我在這里做什么錯了.. 如果您需要更多信息,請隨時問我

不幸的是,我不能使用 mod_jk 模塊,因為我所有的 webapps 目錄結構在所有 3 個 tomcat 實例中都是相同的 - 所以模式匹配是不可能的

提前致謝

最后,我能夠在多台服務器上進行大量更改來完成這項任務。 實際上,上面的配置僅是正確的,只是 vhost 配置文件中缺少“NameVirtualHost”標簽,並且 CMS 上的一些配置是從那里獲取內容的。

- 干杯 -

您的虛擬主機配置缺少 JKMount 選項來告訴 apache 應該使用哪個 worker 來提供內容: https ://tomcat.apache.org/tomcat-3.3-doc/mod_jk-howto.html

您也可以使用 apache ProxyPass 來實現幾乎相同的結果。 在您的情況下,jkmount 是更好的選擇,因為如果您有多個 tomcat 為同一應用程序提供服務,則更容易創建配置來負載平衡流量並保證 HA。

關於 apache 配置,我建議您執行以下操作:

  1. <VirtualHost xxxx:80>更改為<VirtualHost *:80>以便 apache 監聽任何接口,端口 80。(告訴 apache 使用 nameBased VirtualHost 而不是 ipBased)
  2. 我看到您的ServerName xxxx在每個虛擬主機中都相同:這不起作用。 ServerName 和 ServerAlias 在您的配置中應該是唯一的,或者,如果我沒記錯的話,apache 讀取的第一個將匹配,而其他的將被忽略。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM