Tomcat 多端口,多虚拟主机配置方法
只需填加一个 Connector 就可以了。
但这种方法有一个缺点是,两个端口处理的东西是一样的,也就是访问 8081 和 8082 的内容是一样的。这种适合需要使用指定模个端口的情况。
接下来是让 tomcat,一个为不同域名服务。
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
<Host name="www.java.com" appBase="webapps2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
只需填加一个 Host 就可以了,appBase 需要使用另外一个目录。这样不同域名,访问不同目录。
最后,我们可能希望,Tomcat 可以使用不同 IP,访问不同目录。除了进程是一个,其它跟俩个实例一样。这个 xml 比较多,只列出需要的部分。
<Service name="Catalina2">
<Connector port="8082" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
<Engine name="Catalina2" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase
"/>
<Host name="localhost" appBase="webapps2"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
上面是需要新增到 xml 里面的。就是添加了一个 Service。Service name, Engine name,host appBase 都需要修改。这样就可以一个 tomcat 完成俩个实例工作了。
附录:(各个参数的含义)
service?name?指定 service 的名字?
Connector
(表示客户端和 service 之间的连接)?port?指定服务器端要创建的端口号,并在这个断口监听来自客户端的请求?
minProcessors?服务器启动时创建的处理请求的线程数?
maxProcessors?最大可以创建的处理请求的线程数?
enableLookups?如果为 true,则可以通过调用 request.getRemoteHost()进行 DNS 查询来得到远程客户端的实际主机名,若为 false 则不进行 DNS 查询,而是返回其 ip 地址?
redirectPort?指定服务器正在处理 http 请求时收到了一个 SSL 传输请求后重定向的端口号?
acceptCount?指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理?
connectionTimeout?指定超时的时间数(以毫秒为单位)?
Engine
(表示指定 service 中的请求处理机,接收和处理来自 Connector 的请求)?defaultHost?指定缺省的处理请求的主机名,它至少与其中的一个 host 元素的 name 属性值是一样的?
Context
(表示一个 web 应用程序,通常为 WAR 文件,关于 WAR 的具体信息见 servlet 规范)?docBase?应用程序的路径或者是 WAR 文件存放的路径?
path?表示此 web 应用程序的 url 的前缀,这样请求的 url 为 http://localhost:8080/path/****?
reloadable?这个属性非常重要,如果为 true,则 tomcat 会自动检测应用程序的/WEB-INF/lib?和/WEB-INF/classes 目录的变化,自动装载新的应用程序,我们可以在不重起 tomcat 的情况下改变应用程序?
host
(表示一个虚拟主机)
name?指定主机名?
appBase?应用程序基本目录,即存放应用程序的目录?
unpackWARs?如果为 true,则 tomcat 会自动将 WAR 文件解压,否则不解压,直接从 WAR 文件中运行应用程序?
Logger
评论