測試了一下tomcat下配置虛擬目錄、多域名、多個Http監聽端口的配置方式,下面做一個conf/server.xml配置結果的記錄
?? < Listener? className ="org.apache.catalina.core.AprLifecycleListener" ?SSLEngine ="on" ? />
?? < Listener? className ="org.apache.catalina.core.JasperListener" ? />
?? < Listener? className ="org.apache.catalina.core.JreMemoryLeakPreventionListener" ? />
?? < Listener? className ="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" ? />
?? < Listener? className ="org.apache.catalina.core.ThreadLocalLeakPreventionListener" ? />
?? < GlobalNamingResources >
???? < Resource? name ="UserDatabase" ?auth ="Container"
??????????????type ="org.apache.catalina.UserDatabase"
??????????????description ="User?database?that?can?be?updated?and?saved"
??????????????factory ="org.apache.catalina.users.MemoryUserDatabaseFactory"
??????????????pathname ="conf/tomcat-users.xml" ? />
?? </ GlobalNamingResources >
?? < Service? name ="Catalina" >
???? < Connector? port ="8088" ?protocol ="HTTP/1.1"
???????????????connectionTimeout ="20000"
???????????????redirectPort ="8443" ? />
???? < Connector? port ="8009" ?protocol ="AJP/1.3" ?redirectPort ="8443" ? />
???? < Engine? name ="Catalina" ?defaultHost ="localhost" >
?????? < Realm? className ="org.apache.catalina.realm.LockOutRealm" >
???????? < Realm? className ="org.apache.catalina.realm.UserDatabaseRealm"
???????????????resourceName ="UserDatabase" />
?????? </ Realm >
?????? < Host? name ="localhost" ??appBase ="webapps"
????????????unpackWARs ="true" ?autoDeploy ="true" >
???? < Alias > www.test3.com </ Alias > ?
???????? < Valve? className ="org.apache.catalina.valves.AccessLogValve" ?directory ="logs"
???????????????prefix ="localhost_access_log." ?suffix =".txt"
???????????????pattern ="%h?%l?%u?%t?"%r"?%s?%b" ? />
???????? < Context? path ="" ?docBase ="D:\TomCat7.0\testapp\TestWebliu" ? /> ??
?????? </ Host >
??????
?????? < Host? name ="www.test1.com" ??appBase ="testapp"
????????????unpackWARs ="true" ?autoDeploy ="true" >
?????? </ Host >
???? </ Engine >
?? </ Service >
??
????
?? < Service? name ="Catalina2" >
???? < Connector? port ="880" ?protocol ="HTTP/1.1"
???????????????connectionTimeout ="20000"
???????????????redirectPort ="8443" ? />
???? < Connector? port ="8010" ?protocol ="AJP/1.3" ?redirectPort ="8443" ? />
???? < Engine? name ="Catalina2" ?defaultHost ="localhost" >
?????? < Realm? className ="org.apache.catalina.realm.LockOutRealm" >
???????? < Realm? className ="org.apache.catalina.realm.UserDatabaseRealm"
???????????????resourceName ="UserDatabase" />
?????? </ Realm >
?????? < Host? name ="localhost" ??appBase ="webapps"
????????????unpackWARs ="true" ?autoDeploy ="true" >
???????? < Valve? className ="org.apache.catalina.valves.AccessLogValve" ?directory ="logs"
???????????????prefix ="localhost_access_log." ?suffix =".txt"
???????????????pattern ="%h?%l?%u?%t?"%r"?%s?%b" ? />
???????? < Context? path ="" ?docBase ="D:\TomCat7.0\testapp\TestWebliu" ? /> ??
?????? </ Host >
??????
?????? < Host? name ="www.test2.com" ??appBase ="testapp"
????????????unpackWARs ="true" ?autoDeploy ="true" >
????????????
???????? < Context? path ="/TestWeb2" ?docBase ="D:\TomCat7.0\testapp\TestWeb2" ? /> ??
???????? < Context? path ="" ?docBase ="D:\TomCat7.0\testapp\TestWebliu" ? /> ??
??????
?????? </ Host >
???? </ Engine >
?? </ Service >
</ Server >
該server下面兩個service節點,每個service節點可以用 Connector 配置一個監聽端口,service里有只能有一個Engine節點,它接受同級目錄Connector端口的請求,可以通過defaultHost屬性默認指向一個Host,Host就是一個該Connector端口下的域名,下面可以用Context配置多個虛擬目錄。
即:server下面可以有多個service,用于配置不同監聽端口
service下面可以有多個Host,用于配置該端口下的不同域名
Host里可以包含多個Context,用于配置該端口該域名下的不同虛擬目錄
上面的配置,可以用下面鏈接訪問:
http://www.test1.com:8088/TestWeb2/
test1,2,3都是我hosts里指向了本地的。
Host下的Alias是一個域名別稱,可以配置多個域名。
Host里如果沒有Context節點,則非webapps文件夾下,直接不用虛擬目錄訪問,會拋404找不到文件的錯誤,比如上面配置中test1域名下必須用虛擬目錄比如這里的TestWeb2來訪問
Host下面的context節點配置為:<Context path="" 后,則這個目錄為默認的訪問目錄,比如 http://www.test2.com:880/ ,訪問的 D:\TomCat7.0\testapp\TestWebliu 下面的文件。
這里因為我有默認首頁,因此直接輸入域名和端口可以直接訪問到默認的index.jsp頁面,如果沒有默認頁,可能會拋錯,需要配置可以/為列目錄,在conf/web.xml里
<init-param>
??????????? <param-name>listings</param-name>
??????????? <param-value>true</param-value>
??????? </init-param>
把這個的param-value改為true即為可以列目錄了。
當然,如果不配置server.xml文件,直接把網站放到webapps,默認會自動加載該網站,因此大多數情況,我們都不用對server.xml文件做任何修改。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
