Tomcat的Server.xml配置详解
<?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 "%r" %s %b" />
</Host>
</Engine>
</Service>
</Server>