2022
我们一起努力

支持tomcat的虚拟主机

目录:

  • 1、Tomcat基础(2)
  • 2、如何用apache + tomcat 配置虚拟主机
  • 3、tomcat配置多个localhost
  • 4、Tomcat虚拟主机配置

Tomcat基础(2)

Tomcat服务器的配置主要集中于tomcat/conf下的catalina.policy, catalina.properties,context.xml、server.xml、tomcat-users.xml、web.xml文件。

server.xml 是tomcat服务器的核心配置文件,包含了Tomcat的servlet容器(catalina)的所有配置。由于配置的属性特别多,我们在这里主要讲解其中的一部分重要配置。

Server是server.xml的根元素,用于创建一个Server实例,默认使用的实现类是org.apache.catalina.core.standardserver.

port:Tomcat监听的关闭服务器的端口。

shutdown:关闭服务器的指令字符串。

Server内嵌的子元素为Listener, GlobalNamingResources, Service.

默认配置的5个Listener的含义

GlobalNamingResources中定义了全局命名服务

该元素用于创建Service实例,默认使用org.apache.catalina.core.Standardservice,默认情况下,Tomcat仅指定了Service的名称,值为"Catalina",Service可以内嵌的元素为:Listener, Executor, connector, Engine ,其中Listener用于为Service添加生命周期监听器,Executor用于配置Service共享线程池,Connector用于配置Service包含的链接器,Engine用于配置Service中链接器对应的Servlet容器引擎。一个Server服务器,可以包含多个Service服务。

默认情况下Service并未添加共享线程池配置,如果我们想添加一个线程池,可以在下添加如下配置:

属性说明

属性含义

name线程池名称,用于Connector中指定。

nameprefix所创建的每个线程的名称前缀,一个单独的线程名称为namePrefix+threadNumber.

maxThreads池中最大线程数。

minSpareThreads活跃线程数,也就是核心池线程数,这些线程不会被销毁,会一直存在。

maxIdleTime线程空闲时间,超过该时间后,空闲线程会被销毁,默认值为6000 (1分钟) ,单位毫秒。

maxQueuesize在被执行前最大线程排队数目,默认为Int的最大值,也就是广义的无限。除非特殊情况,这个值不需要更改,否则会有请求不会被处理的情况发生。

prestartminSpareThreads启动线程池时是否启动minSpareThreads部分线程。默认值为false,即不启动。

threadPriority线程池中线程优先级,默认值为5,值从1到10。

className

线程池实现类,未指定情况下,默认实现类为org.apache.catalina.core.standardThreadExecutor,如果想使用自定义线程池首先需要实现  org.apache.catalina.Executor接口。

JDK工具jconsole.exe观察线程池被创建

如果不配置共享线程池,那么Catalina各组件在用到线程池时会独立创建。

Connector用于创建链接器实例。默认情况下, server.xml配置了两个链接器,一个支持HTTP协议,一个支持AJP协议。因此大多数情况下,我们并不需要新增链接器配置,只是根据需要对已有链接器进行优化。

属性说明

1) port:端口号,Connector用于创建服务端Socket并进行监听,以等待客户端请求链接。如果该属性设置为0,Tomcat将会随机选择一个可用的端口号给当前Connector使用。

2)protocol :当前Connector支持的访问协议。默认为HTTP/1.1 ,并采用自动切换机制选择一个基于JAVA NIO的链接器或者基于本地APR的链接器(根据本地是否含有Tomcat的本地库判定)。

如果不希望采用上述自动切换的机制,而是明确指定协议,可以使用以下值。

Http协议:

AJP协议

3) connectionTimeOut: Connector接收链接后的等待超时时间,单位为毫秒。-1表示不超时。

4)redirectPort:当前Connector不支持SSL(HTTP协议证书)请求,接收到了一个请求,并且也符合security-constraint约束,需要SSL传输,Catalina自动将请求重定向到指定的端口。

5)executor:指定共享线程池的名称, 也可以通过maxThreads, minSpareThreads等属性配置内部线程池。

6)URIEncoding:用于指定编码URI的字符编码,

Tomcat8.x版本默认的编码为UTF-8,Tomcat7.X版本默认为ISO-8859-1(解决请求字符串乱码问题,Tomcat8版本默认UTF-8不需要指定URI字符编码)。

完整的配置如下:

Engine作为Servlet引擎的顶级元素,内部可嵌入:Cluster、Listener、Realm、Valve和Host。

属性说明:

1)name:用于指定Engine的名称,默认为Catalina。该名称会影响一部分Tomcat的存储路径(如临时文件);

2)defaultHost:默认使用虚拟主机名称,当客户端请求指向的的主机无效时将交由默认虚拟主机处理,默认为localhost。

Host元素用于配置一个虚拟主机,它支持以下嵌入元素:Alias,cluster,Listener,valve,Realm,context,如果在Engine下配置Realm,那么此配置将在当前Engine下的所有Host中共享。同样,如果在Host中配置Realm , 则在当前Host下的所有context中共享。Context中的Realm优先级Host的Realm优先级Engine中的Realm优先级。

属性说明:

1)name:当前Host通用的网络名称,必须与DNS服务器上的注册信息一致。Engine中包含的Host必须存在一个名称与Engine的defaultHost设置一致。

2)appBase:当前Host的应用基础目录,当前Host上部署的web应用均在该目录下(可以是绝对目录,相对路径)。默认为webapps。

3)unpackWARs:设置为true, Host在启动时会将appBase目录下war包解压为目录。设置为false,Host将直接从war文件启动。

4)autoDeploy:控制tomcat是否在运行时定期检测并自动部署新增或变更的web应用。

通过给Host添加别名,我们可以实现同一个Host拥有多个网络名称,配置如下:

Context用于配置一个web应用,默认配置如下:

属性描述 :

1)docBase:Web应用目录或War包的部署路径。可以是绝对路径,也可以是相对于Host appBase的相对路径。

2)Path:Web应用的Context路径。如果我们Host名为localhost,则该web应用访问的路径为:

它支持的内嵌元素为:CookieProcessor,Loader,Manager,Realm,Resources,WatchedResource,Jarscanner,Valve.

该配置文件中,主要配置的是Tomcat的用户,角色等信息,用来控制Tomcat中manager,host-manager的访问权限。

web.xml是web应用的描述文件, 它支持的元素及属性来自于servlet规范定义。在Tomcat中,web应用的描述信息包括tomcat/conf/web.xml中默认配置以及web应用WEB-INE/web.xml下的定制配置。

我们可以通过context-param添加ServletContext初始化参数,它配置了一个键值对,这样我们可以在应用程序中使用javax.servlet.ServletContext.getInitParameter()方法获取参数。 可以直接在servlet中进行应用 。

5.2 会话配置

session-config用于配置web应用会话,包括超时时间Cookie配置以及 会话追踪模式 。它将覆盖server.xml和context.xml

1)session-timeout:超时时间,单位分钟。

2)cookie-config:用于配置会话追踪Cookie

nane:Cookie的名称

domain:Cookie的域名

path: Cookie的路径

comment: 注释

http-only:cookie只能通过HTTP方式进行访问, JS无法读取或修改,此项可以增加网站访问的安全性。

secuze :设置true则此cookie只能通过HTTPS连接传递到服务器,而HTTP连接则不会传递该信息。注意是从浏览器传递到服务器,服务器端的Cookie对像不受此项影响。

max-age:以秒为单位表示cookie的生存期,默认为-1表示是会话Cookie ,浏览器关闭时就会消失。

3)tracking-mode:用于配置会话追踪模式,Servlet3.0版本中支持追踪模式:COOKIE,URL,SSL

ACOOKIE:通过HTTP Cookie 追踪会话是最常用的会话追踪机制, 而且Servlet规范也要求所有的Servlet规范都需要支持Cookie追踪。

B.URL:URL重写是最基本的会话追踪机制。当客户端不支持Cookie时,可以采用URI重写的方式。当采用URI追踪模式时,请求路径需要包含会话标识信息,Servlet容器会根据路径中的会话标识设置请求的会话信息。如:"http: //;jessionid=1234567890。

C.SSL:对于SSL请求,通过SSL会话标识确定请求会话标识。

Servlet的配置主要是两部分,servlet和servlet-mapping;

配置说明:

1)sexvlet-name:指定servle的名称,该属性在web.xml中唯一。

2)servlet-class:用于指定servlet类名

3)init-param:用于指定servlet的初始化参数, 在应用中可以通过HttpServlet.getInitParameter获取。

4) load-on-startup:用于控制在Web应用启动时,Servlet的加载顺序。值小于0, web应用启动时,不加载该servlet,第一次访问时加载

5)enabled: true ,false。若为false ,表示servlet不处理任何请求。

6)url-pattern:用于指定URL表达式,一个servlet-mapping可以同时配置多个url-pattern。

Servlet 中文件上传配置

配置说明:

1)location:存放生成的文件地址。

2) max-file-size:允许上传的文件最大值。默认值为-1,表示没有限制。

3)max-request-size:针对该multi/form-data请求的最大数量,默认值为-1,表示无限制。

4)file-size-threshold:当数量量大于该值时, 内容会被写入文件。

Listener用于监听servlet中的事件,例如context、request、session对象的创建、修改、删除,并触发响应响应。Listener是 观察者模式 的 实现 ,在servlet中主要用于context、request、session对象的生命周期进行监控。在servlet 2.5规范中共定义了8重Listener。在启动时,ServletContextListener的执行顺序与web.xml中的配置顺序一致,停止时执行顺序相反。

配置说明:

1)filter-name:用于指定过滤器名称,在web.xm1中,过滤器名称必须唯一。

2)filter-class:过滤器的全限定类名,该类必须实现Filter接口。

3)async-supported:该过滤器是否支持异步。

4)init-param:用于配置Filter的初始化参数,可以配置多个,可以通过 FilterConfig.getInitParameter 获取

5)url-pattern:指定该过滤器需要拦截的URL。

Tomcat conf/web.xml中配置了web默认访问页面。

Tomcat启动后会尝从上到下的请求顺序。

如果在项目的WEB-INF目录下的web.xml中配置访问页面,则会覆盖Tomcat中的默认配置。

error-page用于配置web项目访问异常时定向的页面,支持HTTP响应码和异常类两种形式。优化用户体验,保证系统安全。

Tomcat中自定义错误页面放入ROOT目录下。

项目中将错误页面放在web目录下,并且会覆盖Tomcat中的配置。

从早期的Tomcat版本开始,就提供了web版的管理控制台,他们是两个独立的web应用,位于webapps目录下。Tomcat提供的管理应用有用于管理的Host的host-manager和用于管理web应用的manager。

这两个web应用主要作用就是为Tomcat提供了管理后台,可以通过这两个应用去管理Tomcat中所配置的虚拟主机、Tomcat中部署的web应用、Tomcat占用的JVM内存分配、JVM参数配比等

Host-manager主要用来管理 虚拟主机 信息。Tomcat启动之后,可以通过 访问该web应用。host-manager默认添加了访问权限控制,当打开网址时,需要输入用户名和密码(conf/tomcat-users.xml中配置) 。所以要想访问该页面,需要在conf/tomcat-users.xml中配置,并分配对应的角色:

1)admin-gui:用于控制页面访问权限

2)admin-script:用于控制以简单文本的形式进行访问

配置如下:

界面:

Manager用来管理部署在当前Tomcat上的web应用,访问路径为 ,同样manager也添加了页面访问控制,因此我们需要为登录用户分配角色为:

Server Status查看服务器状态,给JVM内存优化参考数据

如何用apache + tomcat 配置虚拟主机

发布有几种方式:

1、将工程编译后打成war包,放入TOMCAT_HOME\webapps下,然后启动tomcat,tomcat会自动解包并部署工程

2、将编译后的整个工程文件夹拷贝到webapps下,然后启动tomcat,也能实现发布,不过一般很少这么用

3、在TOMCAT_HOME\conf\Catalina\localhost下新建一个xml文件,其中内容指向你所在的工程的应用目录,然后启动tomcat,也能实现工程的发布,这样的方式对于开发调试来说非常方便,是开发过程中经常使用的方式,xml内容格式如下:

?xml

version="1.0"

encoding="GB2312"?

针对你的问题,可以两种方式:

1、让用户自己打包成war包,然后上传工程文件,并将其手动或自动的拷贝到到TOMCAT_HOME\webapps下,tomcat会实现热部署,实现工程的发布。

2、用户上传自己的工程文件到你的指定目录,你生成一个对应的xml并自动或手动拷贝到TOMCAT_HOME\conf\Catalina\localhost下,tomcat会实现热部署,实现工程的发布。

希望能帮到你~

tomcat配置多个localhost

tomcat配置多个localhost需要使用到tomcat配置多个虚拟主机。根据查询相关***息,得知当一个tomcat需要配多个应用时,并且内网和外网的访问IP还不一样,就需要使用到tomcat配置多个虚拟主机。

Tomcat虚拟主机配置

站点根目录为: c:\wwwroot

站点一目录为: c:\wwwroot\aaa , 域名为

站点二目录为: c:\wwwroot\bbb , 域名为

站点三目录为: c:\wwwroot\ccc , 域名为

Tomcat 配置文件为: tomcat路径/conf/server.xml

站点根目录为: c:\wwwroot

站点一目录为: c:\wwwroot\aaa , 域名为

站点二目录为: c:\wwwroot\bbb , 域名为

Tomcat 配置文件为: tomcat路径/conf/server.xml

注: 若需不同域名访问将 Host name="localhost" appBase="c:\wwwroot" unpackWARs="true" autoDeploy="true" name 字段改为对应域名即可,多个域名可在 Host 标签内添加一个或多个 Alias;/Alias 即可。其中 Connector port、defaultHost、Hostname、appBase、docBase、日志 prefix 为你实际的即可。

a. 可以将不同 service 组件的 Engine name 都指定成 Catalina。

b. 可以将不同 service 组件的 Host appBase 指定成默认的 webapps。

c. Context docBase="/data/java/appstore-web" path="" reloadable="true" / 这个用于配置根路径项目,也就是 /data/java/appstore-web 包访问时是通过 ip:port 来访问,而不是传统的 ip:port/app

假设:

第一个tomcat文件夹为tomcat8-1,路径为 /home/tomcat8-1/

第二个tomcat文件夹为tomcat8-2,路径为 /home/tomcat8-2/

分别修改 tomcat 文件夹 /conf 目录下 server.xml 的监听端口为不同端口。

分别启动 tomcat 文件夹 /bin 目录下的 startup.sh 启动tomcat,停止同上文。

即可运行多个tomcat。

注:根据官方文档 tomcat8.5 且 JAVA7 及其以上才支持 SNI。如果 tomcat 版本较低且需要绑定多个域名情况下,建议使用反向代理方式部署 HTTPS。

在 Connector port="8080" 配置字段下新增 443 端口监听设置即可。

注:若IIS反向代理tomcat绑定https时,选择上启用SSL卸载。以免tomcat未配置HTTPS访问的情况下请求得不到正常响应。

如:

修改配置文件 tomcat路径/conf/tomcat-users.xml :

赞(0)
文章名称:《支持tomcat的虚拟主机》
文章链接:https://www.fzvps.com/247751.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!