[英]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 配置,我建議您執行以下操作:
<VirtualHost xxxx:80>
更改為<VirtualHost *:80>
以便 apache 監聽任何接口,端口 80。(告訴 apache 使用 nameBased VirtualHost 而不是 ipBased)ServerName xxxx
在每個虛擬主機中都相同:這不起作用。 ServerName 和 ServerAlias 在您的配置中應該是唯一的,或者,如果我沒記錯的話,apache 讀取的第一個將匹配,而其他的將被忽略。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.