Tomcat --配置文件

配置文件

      • Server.xml
        • 监听器
        • 全局命名服务
        • Service
          • Executor
          • Connector
          • Engine
          • Host
          • Context
      • web.xml
        • 会话配置
      • Servlet配置
        • tomcat-user.xml
      • 线程池配置
      • 配置安全
      • 传输安全

Server.xml

监听器
  • VersionLoggerListener:用于以日志形式输出服务器、操作系统、JVM版本信息
  • AprLifecycleListener:加载、销毁APR
  • JreMemoryLeakPreventionListener:用于避免JRE内存泄漏问题
  • GlobalResourcesLifecycleListener:用于加载、销毁全局命名服务
  • ThreadLocalLeakPreventionListener:用于在Context停止时重建Executor线程池,避免ThreadLocal相关内存泄漏
全局命名服务
  • GlobalNamingResources
Service
  • 用于创建Service服务
Executor
  • 默认不配置,用各自协议的默认配置
  • 如果配置则在Connector中对指定协议进行配置使用,全局生效
Connector
  • protocol :可配置指定协议,默认HTTP/1.1
  • redirectPort:重定向端口号,使用HTTPS重定向时使用的端口
  • executor:指定配置的共享线程池的名称,见3.1 Executor
  • URIEncoding:指定URI编码,默认UTF-8
Engine
  • name:引擎名称
  • defaultHost:engine中可配置多个Host,通过该配置,指定默认使用的Host配置的主机名称
Host
  • appBase:当前Host的应用基础目录,当前host上部署的web应用都在该目录下,默认webapps
  • unpackWARs:是否自动解析war包
  • autoDeploy:tomcat是否在运行时定期检查并自动部署新增或变更的web应用
Context
  • docBase:war包部署路径或者Web应用目录
  • path:web应用的Context路径,应用的访问路径,如:localhost:8080/myApp
//服务器
<Server port="8005" shutdown="SHUTDOWN">
  //监听器
  <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>
	//用于创建Service服务,
  <Service name="Catalina">
		
    <Executor name="tomcatThreadPool" namePrefix="catalina-exec-"
        maxThreads="150" minSpareThreads="4"/>

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" 
               executor="tomcatThreadPool"
               />
   
    <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">

        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />
        <Context docBase='myApp' path='/myApp' />
      Host>
    Engine>
  Service>
Server>

web.xml

  • 一种是在项目工程的WEB-INF下配置web.xml
  • 一种是tomcat/config下默认web.xml
会话配置

Tomcat --配置文件_第1张图片

<session-config>
  <session-timeout>30session-timeout> --session存活时间
  <cookie-config>
    <name>JESSIONIDname> -- cookie名称
    <domain>域名domain> -- 作用域名
    <path>/path>	--作用路径
    <http-only>truehttp-only>  --cookie只能通过http方式进行访问,js无法修改,更安全
    <secure>truesecure> -- 只能通过https访问才会携带该cookie
    <max-age>3600max-age> --cookie有效期,单位s

  cookie-config>
session-config>

Servlet配置

tomcat-user.xml
  • 对host-manager配置操作
    ○ 可管理虚拟主机,启动或停止某个虚拟主机
  • 对manger配置操作
    ○ 可管理部署的应用,启动或停止某个应用
    ○ 可查看jvm情况
    ○ 可查看线程池情况

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">
  <role rolename="tomcat"/> --角色配置
  <role rolename="role1"/>
  <user username="tomcat" password="" roles="tomcat"/> --用户配置并绑定角色
  <user username="both" password="" roles="tomcat,role1"/>
  <user username="role1" password="" roles="role1"/>
tomcat-users>

线程池配置

  • acceptCount:请求等到队列大小。当Tomcat没有空闲线程处理连接请求时,新来的链接请求将放入等待队列,默认为100。当队列超过acceptCount后新连接将被拒绝。
  • maxConnections:Tomcat能处理的最大并发连接数.当超过后还会接收连接并放入等待队列(acceptCount控制),连接会等待,不能被处理。BIO默认是maxThreads. 对于NIO和NIO2,默认值为10000。对于APR /native,默认值为8192。
  • 仅对于NIO / NIO2,将该值设置为-1将禁用maxConnections功能,并且不计算连接数。
  • minSpareThreads:线程池最小线程数,默认为10。该配置指定线程池可以维持的空闲线程数量。(始终保持运行状态的最小线程数。 这包括活动线程和空闲线程。 如果未指定,则使用默认值10。 如果执行程序与此连接器相关联,则此属性将被忽略,因为连接器将使用执行程序而不是内部线程池执行任务。 请注意,如果配置了执行程序,则将正确记录为此属性设置的任何值,但会将其报告为(例如,通过JMX)-1,以表明未使用该值。)
  • maxThreads:线程池最大线程数,默认为200。当线程池空闲一段时间后会解释放到只保留minSpareThreads个线程。
<Connector port="8080" acceptCount="100" maxConnections="200" minSpareThreads="10"
           maxThreads="200"/>

配置安全

  • 删除webapps目录下所有文件,禁用掉tomcat的manager管理界面
  • 删除tomcat-users.xml文件内所有用户权限信息
  • 禁用或更改tomcat关闭指令 :
    ○ tomcat的server.xml中定义了可以直接关闭tomcat实例的端口8005,通过远程连接如telnet连接该端口后执行SHUTDOWN就会关闭该tomcat实例
    ○ 禁用该指令
    ○ 更改该指令

应用安全

  • 认证:对系统进行登录认证
  • 授权:认证之后具有什么权限,如功能权限、数据权限
  • 常见web项目搭配权限模块,如SpringSecurity、ApacheShiro等框架实现

传输安全

HTTPS协议

  • 网络安全传输协议
  • 在http基础上添加SSL/TLS进行网络通信数据加密

tomcat配置Https

<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
           maxThreads="150" SSLEnabled="true" schema="https" secure="true">
  <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
  <SSLHostConfig>
     -- 配置证书路径
    <Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
                 certificateFile="conf/localhost-rsa-cert.pem"
                 certificateChainFile="conf/localhost-rsa-chain.pem"
                 type="RSA" />
  </SSLHostConfig>
</Connector>

你可能感兴趣的:(Tomcat,tomcat,jvm,java)