多个Tomcat实例

我在一个服务器上有一个Staic IP,可以通过Internet公开访问。 我在该服务器上运行Apache WebServer。

我该如何做 – 在3个不同的内联网PC上运行的3个Web应用程序(在Tomcat上) – 通过互联网可用 – 使用一个我公开的可访问IP。

需要注意的是,Static-IP Server Machine可以有两个网卡,也可以访问内网PC。

请build议最好的方法来解决这个问题。 非常感谢。

我的tomcat虚拟主机设置:

先为Apache启用mod_jk:

a2enmod mod_jk

然后重新启动Apache

cat / etc / apache2 / sites-enabled / tomcat:

NameVirtualHost *:80 <VirtualHost *:80> DocumentRoot /usr/share/tomcat5.5/webapps/mydomain1.com ServerName mydomain1.com JkMount /* mydomain1 ErrorLog /usr/share/tomcat5.5/logs/mydomain1.com-error_log CustomLog "|/usr/sbin/rotatelogs -l /usr/share/tomcat5.5/logs/mydomain1.com-access-%Y-%m-%d.log 86400" combined </VirtualHost> <VirtualHost *:80> DocumentRoot /usr/share/tomcat5.5/webapps/mydomain2.com ServerName mydomain2.com JkMount /* mydomain2 ErrorLog /usr/share/tomcat5.5/logs/mydomain2.com-error_log CustomLog "|/usr/sbin/rotatelogs -l /usr/share/tomcat5.5/logs/mydomain2.com-access-%Y-%m-%d.log 86400" combined </VirtualHost> 

猫/etc/apache2/workers.properties

 workers.tomcat_home=/usr/share/tomcat5.5/ workers.java_home=/usr/lib/jvm/java-6-sun ps=/ worker.list=mydomain1, mydomain2 worker.lic.type=ajp13 worker.lic.host=mydomain1.com worker.lic.port=8009 worker.lic.lbfactor=1 worker.wideok.type=ajp13 worker.wideok.host=mydomain2.com worker.wideok.port=8009 worker.wideok.lbfactor=1 

cat /usr/share/tomcat5.5/conf/server.xml

 <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.core.AprLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> <Valve className="org.apache.catalina.valves.RequestDumperValve"/> <GlobalNamingResources> <Environment name="simpleValue" type="java.lang.Integer" value="30"/> <Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> <Service name="Catalina"> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150000" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="3600000" disableUploadTimeout="true" /> <Connector port="8443" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" SSLEnabled="true" keystoreFile="/usr/share/tomcat5.5/webapps/somedomain.com/ROOT/WEB-INF/ssl/sms_ssl.key" keystorePass="changeit" sslProtocol="SSL" /> <Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> <Engine name="Catalina" defaultHost="localhost"> <Listener className="org.apache.jk.config.ApacheConfig" modJk="/usr/lib/apache2/modules/mod_jk.so" workersConfig="/etc/apache2/workers.properties"/> <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="mydomain1.com" appBase="/usr/share/tomcat5.5/webapps/mydomain1.com" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> <Host name="mydomain2.com" appBase="/usr/share/tomcat5.5/webapps/mydomain2.com" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> </Host> </Engine></Service></Server> 

和/usr/share/tomcat5.5/webapps的dir结构

 /usr/share/tomcat5.5/webapps/ ROOT/WEB-INF ROOT/index.jsp /usr/share/tomcat5.5/webapps/mydomain1.com/ ROOT/WEB-INF ROOT/index.jsp /usr/share/tomcat5.5/webapps/mydomain2.com/ ROOT/WEB-INF ROOT/index.jsp 

希望帮助:)

如果使用mod_jk或mod_proxy来连接Apache httpd和Tomcat,这很容易做到。

首先,为每个Tomcat分配一个path

  http://example.com/app1 http://example.com/app2 

以mod_jk为例,需要为每个Tomcat(worker1,worker2)设置worker,只需将请求redirect到相应的worker,

  JkMount /app1/* worker1 JkMount /app2/* worker1 

如果由于某种原因不想分配path,则需要获取多个域名(每个Tomcat一个),并使用mod_rewrite根据HTTP_HOST标头值在内部注入path。

在这里检查