tomcat配置多域名访问同一应用—不同应用以及其它配置
前言
当tomcat启动的时候它就会读取该server.xml文件,tomcat每读到一个
熟悉下面几个概念
以如下为例
unpackWARs="true" autoDeploy="true">
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
appBase与docBase关系
appBase:这个目录下面的子目录将自动被部署为应用,且war文件将被自动解压缩并部署为应用,默认为tomcat下webapps目录。例如http://localhost:8080/projectName,projectName是webapps下每个应用名。
docBase:指向单个应用,设置访问路径,项目的war文件存放位置,例如http://localhost:8080/test,其中test是path指定的路径。
appBase与docBase没有因果和互斥关系,随便设置。
Context与Host
Host:指定一个域,绑定域名,它下面可以有多个Context。
Context:代表了运行在Host上的单个Web应用,一个Host可以有多个Context元素,每个Web应用必须有唯一的URL路径,这个URL路径在Context中的属性path中设定。
tomcat 实现多域名指定同一项目
由于tomcat是按host配置创建虚拟机的,所以有多少host创建多少个虚拟机,如果指定同一项目,那么配置多个host就划不来了。所以使用
例如
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
这里的关键在于
这样配置就会创建一个虚拟机,不同的域名指定同一应用。
tomcat 实现多域名指定不同项目
这个只能靠创建多个Host实现了。有人说Context里path不能相同,这里
例如
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
用多个Host创建多外域名项目。
项目启动加载多次的问题
方法一
去掉appBase里值。
有问题代码
unpackWARs="true" autoDeploy="true">
- 1
- 2
- 3
- 4
去掉appBase里值后代码
unpackWARs="true" autoDeploy="true">
- 1
- 2
- 3
- 4
方法二
不修改appBase,修改Context配置,将项目war不放在默认目录webapps下。项目所在目录不能与appBase指定路径相同。
unpackWARs="true" autoDeploy="true">
- 1
- 2
- 3
- 4
这里将test.war放到newwebapps里。
支持https协议
申请证书
配置tomcat
certificateKeystorePassword="证书密钥" type="RSA"
/>
certificateKeystorePassword="证书密钥" type="RSA" />