1987WEB视界-分享互联网热门产品和行业

您现在的位置是:首页 > 域名 > 正文

域名

tomcat配置多域名访问同一应用—不同应用以及其它配置

1987web2022-09-13域名297

前言

当tomcat启动的时候它就会读取该server.xml文件,tomcat每读到一个就会加载该标签下指定的应用,它是不知道应用是否相同的,故如果有多个标签都是指定同一个应用,也就是说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就划不来了。所以使用

例如

www.test1.cn

www.test2.cn

prefix="localhost_access_log" suffix=".txt"

pattern="%h %l %u %t "%r" %s %b" />

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

这里的关键在于www.test1.cnwww.test2.cn,将两个域名主机指向了同一个项目。

这样配置就会创建一个虚拟机,不同的域名指定同一应用。

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