Tomcat配置文件详解:server.xml完全指南

Tomcat配置文件详解:server.xml完全指南

【免费下载链接】tomcat Tomcat是一个开源的Web服务器,主要用于部署Java Web应用程序。它的特点是易用性高、稳定性好、兼容性广等。适用于Java Web应用程序部署场景。 【免费下载链接】tomcat 项目地址: https://gitcode.com/gh_mirrors/tom/tomcat

引言:为什么server.xml是Tomcat的"神经系统"

作为Java Web开发者,你是否曾遇到过这些问题:服务器启动失败却找不到原因?应用并发量一高就崩溃?HTTPS配置总是出错?这些问题的根源往往藏在Tomcat最核心的配置文件——server.xml中。

server.xml作为Tomcat的主要配置文件,定义了服务器的整体架构、网络连接方式、虚拟主机设置和安全配置。一个优化的server.xml配置能使你的Web应用性能提升30%以上,同时显著增强系统安全性。本文将带你全面掌握server.xml的结构与配置技巧,从基础到高级,让你成为Tomcat配置专家。

读完本文后,你将能够:

  • 理解server.xml的层次化结构与核心组件
  • 优化Connector配置以提升并发处理能力
  • 正确配置HTTPS与SSL/TLS安全连接
  • 实现多虚拟主机与负载均衡
  • 解决常见的配置错误与性能问题

server.xml文件结构解析

整体架构:Tomcat的"俄罗斯套娃"模型

server.xml采用XML格式,遵循严格的层次化结构。最外层是Server元素,内部嵌套ServiceConnectorEngineHost等核心组件。这种结构类似于"俄罗斯套娃",每个组件都有明确的职责和作用范围。

mermaid

核心组件关系表

组件作用父组件子组件
Server整个Tomcat实例Service, Listener, GlobalNamingResources
Service关联Connector与EngineServerConnector, Engine
Connector处理客户端连接Service
Engine请求处理引擎ServiceHost, Realm
Host虚拟主机EngineContext, Valve
ContextWeb应用上下文HostServlet, Filter等
Listener生命周期事件监听Server, Service, Engine等
Valve请求/响应处理阀门Engine, Host, Context
Realm认证与授权Engine, Host, Context

详细配置指南

1. Server元素:Tomcat实例的"大脑"

Server元素是server.xml的根元素,代表整个Tomcat实例。

<Server port="8005" shutdown="SHUTDOWN">
  <!-- 子组件 -->
</Server>

核心属性

属性描述默认值建议配置
port关闭端口,用于接收关闭命令8005生产环境建议修改为非默认端口
shutdown关闭命令字符串SHUTDOWN建议修改为复杂字符串增强安全性
className实现类org.apache.catalina.core.StandardServer通常无需修改

安全最佳实践

  • 修改默认关闭端口和命令:
<Server port="8888" shutdown="MySuperSecretShutdownCommand">
  • 生产环境可考虑禁用远程关闭功能,通过防火墙限制访问此端口

2. Listener元素:Tomcat的"事件响应系统"

Listener元素用于监听Tomcat生命周期事件,执行相应操作。

<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
<Listener className="org.apache.catalina.core.AprLifecycleListener" />
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

常用监听器及其作用

监听器类名作用启用建议
VersionLoggerListener启动时记录Tomcat版本信息开发环境启用,生产环境可禁用
AprLifecycleListener支持APR(Apache Portable Runtime)建议启用,提升性能
OpenSSLLifecycleListenerJava 22+的OpenSSL支持Java 22+环境可启用
JreMemoryLeakPreventionListener防止JRE内存泄漏必须启用
ThreadLocalLeakPreventionListener防止ThreadLocal内存泄漏必须启用
SecurityListener安全相关监听生产环境建议启用

配置示例:启用安全监听器

<Listener className="org.apache.catalina.security.SecurityListener" />

3. GlobalNamingResources:全局JNDI资源

GlobalNamingResources定义全局JNDI(Java Naming and Directory Interface)资源,供整个服务器使用。

<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>

常见应用:配置全局数据源

<Resource name="jdbc/GlobalDataSource"
          auth="Container"
          type="javax.sql.DataSource"
          driverClassName="com.mysql.cj.jdbc.Driver"
          url="jdbc:mysql://localhost:3306/mydb"
          username="dbuser"
          password="dbpass"
          maxTotal="100"
          maxIdle="20"
          minIdle="5"
          maxWaitMillis="10000"/>

4. Service元素:连接器与引擎的"粘合剂"

Service元素将一个或多个Connector与一个Engine关联起来。

<Service name="Catalina">
  <!-- Connector和Engine -->
</Service>

属性说明

  • name:服务名称,默认"Catalina",用于标识服务

多服务配置示例

<Service name="Catalina">
  <!-- HTTP服务配置 -->
</Service>
<Service name="CatalinaAJP">
  <!-- AJP服务配置 -->
</Service>

5. Connector元素:Tomcat的"通讯接口"

Connector元素定义Tomcat与客户端通信的端点,是性能优化的关键。

5.1 HTTP连接器基础配置
<Connector port="8080" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

核心属性

属性描述默认值优化建议
port监听端口8080生产环境建议使用80端口(需root权限)
protocol协议类型HTTP/1.1高性能场景使用org.apache.coyote.http11.Http11Nio2Protocol
connectionTimeout连接超时时间(毫秒)20000根据应用特性调整,建议10000-30000
redirectPortHTTPS重定向端口8443与HTTPS连接器端口一致
maxThreads最大线程数200根据服务器CPU核心数调整,通常设为(2*CPU核心数+1)
minSpareThreads最小空闲线程数10建议设为maxThreads的1/4
acceptCount最大等待队列长度100高并发场景可增加到200-500
enableLookups是否反向解析IP为主机名false保持禁用,提升性能
compression是否启用压缩off建议设为"on"或"force"
compressableMimeType可压缩的MIME类型text/html,text/xml,text/plain增加application/json,application/javascript
5.2 线程池配置

使用共享线程池提升性能:

<Executor name="tomcatThreadPool" 
          namePrefix="catalina-exec-"
          maxThreads="200" 
          minSpareThreads="20"
          maxIdleTime="60000"
          prestartminSpareThreads="true"/>

<Connector executor="tomcatThreadPool"
           port="8080" 
           protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

Executor属性说明

  • name:线程池名称,供Connector引用
  • namePrefix:线程名称前缀
  • maxThreads:最大线程数
  • minSpareThreads:最小空闲线程数
  • maxIdleTime:线程最大空闲时间(毫秒)
  • prestartminSpareThreads:是否预启动最小空闲线程
5.3 HTTPS配置

配置SSL/TLS安全连接:

<Connector port="8443" 
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="150" 
           SSLEnabled="true">
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/localhost-rsa.jks"
                     certificateKeystorePassword="changeit" 
                     type="RSA" />
    </SSLHostConfig>
</Connector>

HTTPS配置步骤

  1. 生成密钥库:
keytool -genkeypair -alias tomcat -keyalg RSA -keysize 2048 -keystore conf/keystore.jks -validity 3650
  1. 配置Connector:
<Connector port="443" 
           protocol="org.apache.coyote.http11.Http11NioProtocol"
           maxThreads="200" 
           SSLEnabled="true">
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    <SSLHostConfig>
        <Certificate certificateKeystoreFile="conf/keystore.jks"
                     certificateKeystorePassword="yourpassword" 
                     type="RSA" />
    </SSLHostConfig>
</Connector>
  1. 强制HTTPS重定向:
<Valve className="org.apache.catalina.valves.RemoteIpValve" />
<Valve className="org.apache.catalina.valves.RequestDumperValve" />
<Valve className="org.apache.catalina.authenticator.FormAuthenticator" />
5.4 AJP连接器配置

AJP(Apache JServ Protocol)连接器用于与Apache HTTP服务器集成:

<Connector protocol="AJP/1.3"
           address="::1"
           port="8009"
           redirectPort="8443"
           secretRequired="true"
           secret="yourSecretKey" />

安全注意事项

  • 必须设置secretRequired="true"secret="yourSecretKey"
  • 限制监听地址address="127.0.0.1",只允许本地访问
  • 生产环境如不使用Apache前端,建议禁用AJP连接器

6. Engine元素:请求处理的"中央处理器"

Engine是Service的请求处理引擎,负责将请求路由到适当的Host。

<Engine name="Catalina" defaultHost="localhost">
  <!-- Realm和Host配置 -->
</Engine>

核心属性

  • name:引擎名称,默认"Catalina"
  • defaultHost:默认虚拟主机名,必须与某个Host的name属性匹配
  • jvmRoute:用于集群环境,标识当前JVM实例,用于会话粘性

集群配置示例

<Engine name="Catalina" defaultHost="localhost" jvmRoute="jvm1">
  <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/>
  <!-- 其他配置 -->
</Engine>

7. Realm元素:Tomcat的"身份验证系统"

Realm提供用户认证和授权功能,控制对Web应用的访问。

<Realm className="org.apache.catalina.realm.LockOutRealm">
  <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
         resourceName="UserDatabase"/>
</Realm>

常用Realm类型

Realm类型描述适用场景
UserDatabaseRealm基于XML文件的用户数据库开发环境、简单应用
JDBCRealm基于关系型数据库生产环境,用户数据存储在数据库
DataSourceRealm基于JNDI数据源生产环境,支持连接池
JNDIRealm基于LDAP目录服务企业环境,集成现有LDAP
MemoryRealm基于内存的用户存储测试环境

JDBCRealm配置示例

<Realm className="org.apache.catalina.realm.JDBCRealm"
       driverName="com.mysql.cj.jdbc.Driver"
       connectionURL="jdbc:mysql://localhost:3306/tomcat_users"
       connectionName="dbuser"
       connectionPassword="dbpass"
       userTable="users" userNameCol="user_name" userCredCol="user_pass"
       userRoleTable="user_roles" roleNameCol="role_name"/>

8. Host元素:虚拟主机配置

Host元素定义虚拟主机,允许在单个Tomcat实例上部署多个Web应用。

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="true">
  <!-- Valve和Context配置 -->
</Host>

核心属性

属性描述默认值配置建议
name主机名localhost配置为域名,如"www.example.com"
appBase应用基础目录webapps建议使用绝对路径,如"/opt/tomcat/webapps"
unpackWARs是否自动解压WAR文件true开发环境true,生产环境false提升性能
autoDeploy是否自动部署true生产环境建议设为false,手动控制部署
deployOnStartup启动时是否部署应用true大型应用可设为false,手动触发部署
xmlValidation是否验证XML配置false生产环境建议设为true
xmlNamespaceAware是否启用XML命名空间false与xmlValidation保持一致

多虚拟主机配置示例

<Host name="www.example.com" appBase="/opt/webapps/example"
      unpackWARs="false" autoDeploy="false">
  <Context path="" docBase="ROOT" />
  <Valve className="org.apache.catalina.valves.AccessLogValve" 
         directory="logs/example"
         prefix="example_access_log" suffix=".txt"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

<Host name="blog.example.com" appBase="/opt/webapps/blog"
      unpackWARs="false" autoDeploy="false">
  <Context path="" docBase="ROOT" />
  <Valve className="org.apache.catalina.valves.AccessLogValve" 
         directory="logs/blog"
         prefix="blog_access_log" suffix=".txt"
         pattern="combined" />
</Host>

9. Context元素:Web应用上下文

Context元素定义Web应用的上下文配置,可嵌套在Host中。

常用配置方式

  1. 在server.xml中直接配置:
<Context path="/myapp" docBase="/opt/apps/myapp"
         reloadable="false" cachingAllowed="true"
         cacheMaxSize="102400" />
  1. $CATALINA_BASE/conf/[enginename]/[hostname]/目录下创建XML文件

核心属性

属性描述默认值配置建议
path应用访问路径空字符串根应用设为"",其他应用设为"/appname"
docBase应用目录或WAR文件路径使用绝对路径提高可靠性
reloadable是否自动重载类文件false开发环境true,生产环境false
cachingAllowed是否启用静态资源缓存true生产环境建议启用
cacheMaxSize缓存最大大小(KB)10240根据应用静态资源大小调整
sessionTimeout会话超时时间(分钟)30根据应用需求调整,一般15-60分钟
privileged是否允许访问容器内部APIfalse除非必要,保持false

资源配置示例

<Context path="/myapp" docBase="/opt/apps/myapp">
  <Resource name="jdbc/MyDB" auth="Container" type="javax.sql.DataSource"
            driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/mydb"
            username="dbuser" password="dbpass" maxTotal="20" maxIdle="10"/>
            
  <ResourceLink name="jdbc/LinkedDB" global="jdbc/GlobalDB" type="javax.sql.DataSource"/>
  
  <Parameter name="app.version" value="2.5" override="false"/>
</Context>

10. Valve元素:Tomcat的"过滤器"

Valve元素类似于过滤器,可在请求处理的不同阶段拦截请求和响应。

常用Valve配置

10.1 访问日志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 &quot;%{Referer}i&quot; &quot;%{User-Agent}i&quot; %D" />

日志格式说明

  • %h:客户端IP地址
  • %l:远程逻辑用户名(通常为'-')
  • %u:认证用户(未认证为'-')
  • %t:请求时间
  • %r:请求行(方法、URL、协议)
  • %s:状态码
  • %b:响应大小(字节,不包括HTTP头)
  • %D:处理时间(微秒)
  • %{Referer}i:Referer请求头
  • %{User-Agent}i:User-Agent请求头
10.2 安全相关Valve
<!-- 防止点击劫持 -->
<Valve className="org.apache.catalina.valves.HeadersValve" 
       addDefaultHeaders="true"
       alwaysAddStrictTransportSecurity="true"
       strictTransportSecurity="max-age=31536000; includeSubDomains"
       contentSecurityPolicy="default-src 'self'"
       xFrameOptions="DENY"
       xXssProtection="1; mode=block"
       xContentTypeOptions="nosniff" />

<!-- IP访问控制 -->
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
       allow="192\.168\.1\.\d+|127\.0\.0\.1"
       deny="192\.168\.1\.100" />
10.3 性能相关Valve
<!-- 请求限流 -->
<Valve className="org.apache.catalina.valves.RateLimitValve"
       limit="100" burst="20" period="60" />

性能优化实践

1. 连接器性能调优

优化配置示例

<Executor name="tomcatThreadPool" 
          namePrefix="catalina-exec-"
          maxThreads="500" 
          minSpareThreads="50"
          maxIdleTime="60000"
          prestartminSpareThreads="true"
          maxQueueSize="100"/>

<Connector executor="tomcatThreadPool"
           port="8080"
           protocol="org.apache.coyote.http11.Http11Nio2Protocol"
           connectionTimeout="20000"
           redirectPort="8443"
           acceptCount="200"
           maxConnections="10000"
           compression="on"
           compressionMinSize="2048"
           compressableMimeType="text/html,text/xml,text/plain,application/json,application/javascript"
           disableUploadTimeout="true"
           keepAliveTimeout="60000"
           maxKeepAliveRequests="100"/>

关键优化点

  • 使用NIO2协议(Http11Nio2Protocol)提升异步IO性能
  • 合理设置线程池大小,根据CPU核心数和内存容量调整
  • 启用压缩减少网络传输量
  • 优化Keep-Alive设置,减少TCP连接建立开销

2. JVM参数优化

虽然JVM参数不在server.xml中配置,但对Tomcat性能至关重要:

export CATALINA_OPTS="$CATALINA_OPTS -Xms2G -Xmx2G"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+UseG1GC -XX:MaxGCPauseMillis=200"
export CATALINA_OPTS="$CATALINA_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tomcat"
export CATALINA_OPTS="$CATALINA_OPTS -Djava.awt.headless=true -Dfile.encoding=UTF-8"

3. 静态资源优化

<Context path="/myapp" docBase="/opt/apps/myapp">
  <Resources cachingAllowed="true" cacheMaxSize="102400" />
  <Valve className="org.apache.catalina.valves.ExpiresValve"
         expireByType text/html="access plus 1 hour"
         expireByType text/css="access plus 1 week"
         expireByType text/javascript="access plus 1 week"
         expireByType image/jpeg="access plus 1 month"
         expireByType image/png="access plus 1 month" />
</Context>

常见问题解决

1. 端口冲突问题

错误信息Address already in use: JVM_Bind

解决方法

  • 查找占用端口的进程:
# Linux
netstat -tulpn | grep 8080
# Windows
netstat -ano | findstr :8080
  • 修改冲突端口:
<Connector port="8081" protocol="HTTP/1.1" ... />

2. 内存泄漏问题

症状:Tomcat运行一段时间后内存占用持续增加

解决方法

  • 确保启用内存泄漏防护监听器:
<Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
<Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
  • 配置应用卸载时的线程清理:
<Context ...>
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
</Context>

3. HTTPS配置错误

常见错误与解决

  1. 证书文件找不到

    • 确保certificateKeystoreFile路径正确,使用绝对路径
  2. 密钥库密码错误

    • 验证密钥库密码是否正确
    • 使用keytool验证密钥库:keytool -list -keystore conf/keystore.jks
  3. 浏览器安全警告

    • 确保证书由可信CA签发
    • 配置正确的证书链

4. 应用部署问题

自动部署不生效

<Host name="localhost" appBase="webapps"
      unpackWARs="true" autoDeploy="true"
      deployOnStartup="true" deployXML="true">
  <!-- 确保deployXML设为true -->
</Host>

生产环境最佳实践

1. 目录结构规划

/opt/tomcat/
├── conf/           # 配置文件
├── lib/            # 共享库
├── logs/           # 日志文件
├── webapps/        # Web应用
├── temp/           # 临时文件
├── work/           # 工作目录
├── backups/        # 配置备份
└── scripts/        # 启动/停止脚本

2. 安全加固措施

  • 移除默认应用:docs、examples、host-manager、manager
  • 禁用管理界面或限制访问IP
  • 修改默认关闭端口和命令
  • 使用非root用户运行Tomcat
  • 定期更新Tomcat版本修复安全漏洞
  • 启用安全监听器和 valves
  • 配置强密码策略
  • 限制JNDI资源访问权限

3. 监控与日志配置

<Valve className="org.apache.catalina.valves.AccessLogValve"
       directory="logs"
       prefix="access_log" suffix=".txt"
       pattern="combined"
       rotate="true"
       maxDays="30"
       fileDateFormat="yyyy-MM-dd"/>

<Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
          rmiRegistryPortPlatform="10001"
          rmiServerPortPlatform="10002"
          username="jmxuser"
          password="jmxpassword"/>

总结与展望

server.xml作为Tomcat的核心配置文件,掌握其配置技巧对于构建高性能、高安全性的Java Web应用至关重要。本文详细介绍了server.xml的结构和各组件配置,包括Server、Listener、Connector、Engine、Host等核心元素,以及性能优化和安全加固的最佳实践。

随着云原生技术的发展,Tomcat也在不断演进,如支持HTTP/2、WebSocket、GraalVM原生镜像等特性。未来,server.xml配置可能会更加简化,更多配置将通过环境变量和注解方式实现,但XML配置的灵活性和强大功能仍然不可替代。

建议开发者定期查阅Tomcat官方文档,关注新版本特性,不断优化服务器配置,以适应不断变化的应用需求和技术环境。

附录:server.xml配置模板

以下是一个生产环境的server.xml模板,可根据实际需求调整:

<?xml version="1.0" encoding="UTF-8"?>
<Server port="8888" shutdown="MySecureShutdownCommand">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <Listener className="org.apache.catalina.security.SecurityListener" />
  <Listener className="org.apache.catalina.core.AprLifecycleListener" />
  <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"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />
    <Resource name="jdbc/GlobalDS" auth="Container"
              type="javax.sql.DataSource"
              driverClassName="com.mysql.cj.jdbc.Driver"
              url="jdbc:mysql://dbhost:3306/mydb"
              username="dbuser" password="dbpass"
              maxTotal="100" maxIdle="20" minIdle="5"
              maxWaitMillis="10000" />
  </GlobalNamingResources>

  <Service name="Catalina">
    <Executor name="tomcatThreadPool"
              namePrefix="catalina-exec-"
              maxThreads="500"
              minSpareThreads="50"
              maxIdleTime="60000"
              prestartminSpareThreads="true"
              maxQueueSize="100"/>

    <Connector executor="tomcatThreadPool"
               port="80"
               protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               connectionTimeout="20000"
               redirectPort="443"
               acceptCount="200"
               maxConnections="10000"
               compression="on"
               compressionMinSize="2048"
               compressableMimeType="text/html,text/xml,text/plain,application/json,application/javascript"
               disableUploadTimeout="true"
               keepAliveTimeout="60000"
               maxKeepAliveRequests="100"/>

    <Connector port="443"
               protocol="org.apache.coyote.http11.Http11Nio2Protocol"
               maxThreads="200"
               SSLEnabled="true">
      <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
      <SSLHostConfig>
        <Certificate certificateKeystoreFile="/opt/tomcat/conf/keystore.jks"
                     certificateKeystorePassword="securepassword"
                     type="RSA" />
      </SSLHostConfig>
    </Connector>

    <Engine name="Catalina" defaultHost="www.example.com">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.JDBCRealm"
               driverName="com.mysql.cj.jdbc.Driver"
               connectionURL="jdbc:mysql://dbhost:3306/authdb"
               connectionName="authuser" connectionPassword="authpass"
               userTable="users" userNameCol="username" userCredCol="password"
               userRoleTable="user_roles" roleNameCol="role"/>
      </Realm>

      <Host name="www.example.com" appBase="/opt/webapps/example"
            unpackWARs="false" autoDeploy="false">
        <Context path="" docBase="ROOT" reloadable="false" />
        <Valve className="org.apache.catalina.valves.AccessLogValve"
               directory="logs/example"
               prefix="example_access_log" suffix=".txt"
               pattern="combined" />
        <Valve className="org.apache.catalina.valves.HeadersValve"
               addDefaultHeaders="true"
               xFrameOptions="SAMEORIGIN"
               xXssProtection="1; mode=block"
               xContentTypeOptions="nosniff" />
      </Host>

      <Host name="api.example.com" appBase="/opt/webapps/api"
            unpackWARs="false" autoDeploy="false">
        <Context path="" docBase="ROOT" reloadable="false" />
        <Valve className="org.apache.catalina.valves.AccessLogValve"
               directory="logs/api"
               prefix="api_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b %D" />
      </Host>
    </Engine>
  </Service>
</Server>

参考资料

  1. Apache Tomcat官方文档: https://tomcat.apache.org/tomcat-10.1-doc/index.html
  2. Tomcat Configuration Reference: https://tomcat.apache.org/tomcat-10.1-doc/config/index.html
  3. Tomcat Security Best Practices: https://tomcat.apache.org/tomcat-10.1-doc/security-howto.html
  4. Apache Tomcat Performance Tuning: https://tomcat.apache.org/tomcat-10.1-doc/perf-tuning.html

【免费下载链接】tomcat Tomcat是一个开源的Web服务器,主要用于部署Java Web应用程序。它的特点是易用性高、稳定性好、兼容性广等。适用于Java Web应用程序部署场景。 【免费下载链接】tomcat 项目地址: https://gitcode.com/gh_mirrors/tom/tomcat

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值