tomcat配置域名(tomcat)

前言当tomcat启动的时候它就会读取该server.xml文件,tomcat每读到一个<Host>就会加载该标签下指定的应用,它是不知道应用是否相同的,故如果有多个<Host>标签都是指定同一个应用,也就是说tomcat重复加载了多遍同样应用。创建多个虚拟主机,很消耗内存。熟悉下面几个概念以如下为例<Host name=”localhost” appBase=”webapps” unpackWARs=”true” autoDeploy=”true”> <Context path=”/test” docBase=”D:/apache-tomcat-8.5.20/webapps/test” debug=”0″ reloadable=”false”/> <Valve className=”org.apache.catalina.valves.AccessLogValve” directory=”logs” prefix=”localhost_access_log” suffix=”.txt” pattern=”%h %l %u %t “%r” %s %b” /> </Host>12345678appBase与docBase关系appBase:这个目录下面的子目录将自动被部署为应用,且war文件将被自动解压缩并部署为应用,默认为tomcat下webapps目录。例如http://localhost:8080/projectName,projectName是webapps下每个应用名。 docBase:指向单个应用,设置访问路径,项目的war文件存放位置,例如http://localhost:8080/test,其中test是path指定的路径。 appBase与docBase没有因果和互斥关系,随便设置。Context与HostHost:指定一个域,绑定域名,它下面可以有多个Context。 Context:代表了运行在Host上的单个Web应用,一个Host可以有多个Context元素,每个Web应用必须有唯一的URL路径,这个URL路径在Context中的属性path中设定。tomcat 实现多域名指定同一项目由于tomcat是按host配置创建虚拟机的,所以有多少host创建多少个虚拟机,如果指定同一项目,那么配置多个host就划不来了。所以使用<Alias>。 例如<Host name=”localhost” appBase=”webapps” unpackWARs=”false” autoDeploy=”true”> <Alias>www.test1.cn</Alias> <Alias>www.test2.cn</Alias> <!– 设置默认项目名称 –> <Context path=”” docBase=”/root/tomcat/webapps/test” reloadable=”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>123456789这里的关键在于<Alias>www.test1.cn</Alias><Alias>www.test2.cn</Alias>,将两个域名主机指向了同一个项目。 这样配置就会创建一个虚拟机,不同的域名指定同一应用。tomcat 实现多域名指定不同项目这个只能靠创建多个Host实现了。有人说Context里path不能相同,这里 例如<Host name=”locathost” appBase=”webapps” unpackWARs=”false” autoDeploy=”true”> <!– 设置默认项目名称 –> <Context path=”” docBase=”/root/tomcat/webapps/test” reloadable=”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><Host name=”www.test1.cn” appBase=”webapps” unpackWARs=”false” autoDeploy=”true”> <!– 设置默认项目名称 –> <Context path=”” docBase=”/root/tomcat/webapps/test1″ reloadable=”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><Host name=”www.test2.cn” appBase=”webapps” unpackWARs=”false” autoDeploy=”true”> <!– 设置默认项目名称 –> <Context path=”” docBase=”/root/tomcat/webapps/test2″ reloadable=”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>12345678910111213141516171819202122用多个Host创建多外域名项目。项目启动加载多次的问题方法一去掉appBase里值。 有问题代码<Host name=”localhost” appBase=”webapps” unpackWARs=”true” autoDeploy=”true”> <Context path=”/test” docBase=”D:/apache-tomcat-8.5.20/webapps/test” debug=”0″ reloadable=”false”/> </Host>1234去掉appBase里值后代码<Host name=”localhost” appBase=”” unpackWARs=”true” autoDeploy=”true”> <Context path=”/test” docBase=”D:/apache-tomcat-8.5.20/webapps/test” debug=”0″ reloadable=”false”/> </Host>1234方法二不修改appBase,修改Context配置,将项目war不放在默认目录webapps下。项目所在目录不能与appBase指定路径相同。<Host name=”localhost” appBase=”” unpackWARs=”true” autoDeploy=”true”> <Context path=”/test” docBase=”D:/apache-tomcat-8.5.20/newwebapps/test” debug=”0″ reloadable=”false”/> </Host>1234这里将test.war放到newwebapps里。支持https协议申请证书 配置tomcat<Connector port=”443″ protocol=”org.apache.coyote.http11.Http11NioProtocol” maxThreads=”150″ SSLEnabled=”true” defaultSSLHostConfigName=”www.hemingsheng.cn” > <SSLHostConfig hostName=”www.hemingsheng.cn”> <Certificate certificateKeystoreFile=”证书路径” certificateKeystorePassword=”证书密钥” type=”RSA” /> </SSLHostConfig> <SSLHostConfig hostName=”www.tinger.wang”> <Certificate certificateKeystoreFile=”证书路径” certificateKeystorePassword=”证书密钥” type=”RSA” /> </SSLHostConfig></Connector>

本文出自快速备案,转载时请注明出处及相应链接。

本文永久链接: https://www.175ku.com/27248.html