Tomcat配置虛擬目錄、多域名、多個Http監聽端口的方式


測試了一下tomcat下配置虛擬目錄、多域名、多個Http監聽端口的配置方式,下面做一個conf/server.xml配置結果的記錄

< Server  port ="8005"  shutdown ="SHUTDOWN" >
   < 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 &quot;%r&quot; %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 &quot;%r&quot; %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://127.0.0.1:8088/

http://www.test3.com:8088/

http://www.test1.com:8088/TestWeb2/

http://www.test2.com:880/

http://127.0.0.1:880/

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里

http://lawson.cnblogs.com/

<init-param>
            <param-name>listings</param-name>
            <param-value>true</param-value>
        </init-param>

把這個的param-value改為true即為可以列目錄了。

當然,如果不配置server.xml文件,直接把網站放到webapps,默認會自動加載該網站,因此大多數情況,我們都不用對server.xml文件做任何修改。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM