美文网首页
Tomcat之server.xml配置

Tomcat之server.xml配置

作者: liangxifeng833 | 来源:发表于2018-01-22 20:23 被阅读12次

Tomcat Server.xml结构图

image.png
<?xml version='1.0' encoding='utf-8'?>
<!--
Server是顶级组件,代表一个 Tomcat 实例
可以包含一个或多个 Services ,其中每个 Service 都有自己的 Engines 和 Connectors
属性说明:
    port:指定一个端口,这个端口负责监听关闭Tomcat的请求  
    shutdown:向以上端口发送的关闭服务器的命令字符串  
-->
<Server port="8005" shutdown="SHUTDOWN"> 
  <Listener className="org.apache.catalina.core.JasperListener" />
  <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元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客户请求 
-->  
  <Service name="Catalina">
    <!--  
      Connector元素:  
      由Connector接口定义.<Connector>元素代表与客户程序实际交互的组件,
      它负责接收客户请求,以及向客户返回响应结果.  
      属性说明:
      port:Tomcat HTTP 服务默认在 TCP 端口8080上运行 ,可以选择1024到65535之间的任意数字作为端口号来运行 Tomcat 服务器,
      connectionTimeOut:连接后最大等待时间毫秒数。默认为20秒。
      redirect: 会把 SSL 请求重定向到 TCP 的8443端口。
      AJP/1.3:Apache JServ Protocol connector 处理 Tomcat 服务器与 Apache HTTP 服务器之间的交互。
      可以将 Tomcat 和 Apache HTTP 服务运行在一起,Apache HTTP 服务器处理静态请求和 PHP;Tomcat 服务器负责处理 Java Servlet/JSP 
    -->  
    <!--
      以下:有三个Connector组件,分别开启8080,8009,443三个端口
    -->
    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
    <!--双向认证-线上-443-port配置 -->
     <Connector port="443" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true"
                maxThreads="150" scheme="https" secure="true"
                clientAuth="true" sslProtocol="TLS" 
                keystoreFile="/home/ca/citic/server.keystore" keystorePass="123456" 
                truststoreFile="/home/ca/root.truststore" truststorePass="123456"
     />
 
    <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" />
      </Host>
    </Engine>
  </Service>
</Server>

多项目使用同一域名(多端口访问)

  <Service name="Catalina">
    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
    <Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
    <Engine defaultHost="localhost" name="Catalina">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>

     <!-- 访问路径:localhost:8080/testA
            localhost:8080/testB
                    localhost:8009/testA
                    localhost:8009/testB
      -->
      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">

           <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/>
           <!--注意:docBase 要使用绝对路径 -->
           <Context docBase="/usr/local/tomcat/webapps/testHostA" path="/testA" reloadable="true" autodeploy="true" />
       <Context docBase="/usr/local/tomcat/webapps/testHostB" path="/testB" reloadable="true"  autodeploy="true" />
      </Host>     
    </Engine>
  </Service>

不同项目使用不同域名

实现多域名访问(通过同一个端口号)

<Service name="Catalina">
    <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
    <Engine name="Catalina" defaultHost="localhost"> 
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>

      <!-- 访问路径:testA.loc:8080  -->
     <Host name="testA.loc"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Context path="/" docBase="/usr/local/tomcat/webapps/testHostA" allowLinking="true" />
        
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

      </Host>

      <!-- 访问路径:testB.loc:8080  -->
     <Host name="testB.loc"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Context path="/" docBase="/usr/local/tomcat/webapps/testHostB" allowLinking="true" />
        
        <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>

实现多域名访问(使用不同的端口号)

配置多个service,每个service对应自己的端口配置

  <!--liangxifeng 2018.1.6 该service实例使用8081端口访问对应网站目录是:/user/local/tomcat/webapps-->
  <Service name="Catalina">
    <Connector connectionTimeout="20000" port="8081" protocol="HTTP/1.1" redirectPort="8443"/>
    <Connector SSLEnabled="true" acceptCount="100" clientAuth="true" disableUploadTimeout="true" enableLookups="true" keystoreFile="/home/lxf/java/ssl_key/ca/server/server_keystore" keystorePass="123456" maxSpareThreads="75" maxThreads="150" minSpareThreads="5" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" scheme="https" secure="true" sslProtocol="TLS"/>
    <Engine defaultHost="localhost" name="Catalina">

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

      <Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost_access_log." suffix=".txt"/>
       <Context docBase="spring-mvc-springAndspringMVC" path="/spring-mvc-springAndspringMVC" reloadable="true" source="org.eclipse.jst.jee.server:spring-mvc-springAndspringMVC"/>
    <Context docBase="/usr/local/tomcat/webapps/testHost" path="/testHost" reloadable="true" source="org.eclipse.jst.jee.server:test-one"/>
      </Host>
    </Engine>
  </Service>

  <!--liangxifeng 2018.1.6 该service实例使用8082端口访问对应网站目录是:/user/local/tomcat/lxfweb/website-one-->
  <Service name="Catalina2">
    <Connector connectionTimeout="20000" port="8082" protocol="HTTP/1.1" redirectPort="8443"/>
    <Engine defaultHost="localhost" name="Catalina2">
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
      </Realm>
      <Host appBase="lxfweb/website-one" autoDeploy="true" name="localhost" unpackWARs="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t &quot;%r&quot; %s %b" prefix="localhost-lxf_access_log." suffix=".txt"/>
      </Host>
    </Engine>
  </Service>

以上配置也就是相当于apache虚拟主机的

<VirtualHost localhost:8081>
  DocumentRoot /user/local/tomcat/webapps
  ServerName localhost
</VirtualHost>

<VirtualHost localhost:8082>
  DocumentRoot /user/local/tomcat/lxfweb/website-one
  ServerName localhost
</VirtualHost>

相关文章

网友评论

      本文标题:Tomcat之server.xml配置

      本文链接:https://www.haomeiwen.com/subject/leqynxtx.html