Tomcat的Server.xml配置詳解

搬磚大叔發表於2018-12-30
<?xml version="1.0" encoding="UTF-8"?>
<Server port="8005" shutdown="SHUTDOWN">
	<!-- Listener監聽器 -->
	<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
	<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
	<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>
	<!-- Tomcat服務,name=Catalina,用於 繫結 聯結器與 Engine -->
	<Service name="Catalina">
		<!-- 
			Tomcat聯結器
			port:埠號
			protocol:協議
			connectionTimeout:連線超時時間(單位毫秒)
			redirectPort:如果使用https://來訪問這個8080埠,就會重定向到8443這個埠,8443也得有對應的聯結器,否則轉發不過去
			minThread	伺服器啟動時建立的處理請求的執行緒數
			maxThread	最大可以建立的處理請求的執行緒數
			enableLookups	如果為true,則可以通過呼叫request.getRemoteHost()進行DNS查詢來得到遠端客戶端的實際主機名,若為false則不進行DNS查詢,而是返回其ip地址
			acceptCount	指定當所有可以使用的處理請求的執行緒數都被使用時,可以放到處理佇列中的請求數,超過這個數的請求將不予處理
			SSLEnabled 是否開啟 sll 驗證,在Https 訪問時需要開啟。
		-->
		<Connector port="8080" protocol="HTTP/1.1"
				   connectionTimeout="20000"
				   redirectPort="8443" />
		<!--
			protocol="AJP/1.3",是Apache和Tomcat之間在進行反向代理的時候的一個私有協議(體積更輕,效能更快)
		-->
		<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
		
		<!--
			Engine引擎
			name="Catalina"核心引擎
			defaultHost:預設host,host就是虛擬主機,基於域名區分,當沒有域名能區分的時候,就將請求發給預設的host
		-->
		<Engine name="Catalina" defaultHost="localhost">
			<!--
				Realm:領域
				UserDatabaseRealm將UserDatabase的資料注入到引擎中,便於引擎訪問UserDatabase
			-->
			<Realm className="org.apache.catalina.realm.LockOutRealm">
			<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
				   resourceName="UserDatabase"/>
			</Realm>
			<!--
				appBase=webapps,這也就是為什麼可以直接解析webapps的原因
				unpackWARs=true,存在war包則解析
				autoDeploy=false,自動部署
			-->
			<Host name="localhost"  appBase="webapps"
				unpackWARs="true" autoDeploy="true">
			<Logger /> <!-- 日誌配置-->
			<!-- 
				上下文配置
				一個host 下可以配置多個Context ,每個Context 都有其獨立的classPath。相互隔離,以免造成ClassPath 衝突。
			-->
			<Context "/test" path=""/> 
			<!--
				Valve:閥門也可以理解為一個過濾器,放在了host裡面則服務於整個host,放在Context內則只服務於那一個Context
				作用:列印請求日誌,IP過濾,限流等	
				具體配置要基於具體的Valve 介面的子類。以下即為一個訪問日誌的Valve.
			-->
			<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" />
		  </Host>
		</Engine>
  </Service>
</Server>

複製程式碼

相關文章