在两个不同的端口上运行Tomcat服务器

我想部署一个tomcat服务器,以便它同时监听两个端口(都是http协议)。

为了确保你理解这个需求,我们只有一个服务器实例,但是想要在两个端口上监听HTTP协议。 例如,任何人都可以使用端口号7080和8080访问我的服务器中部署的应用程序

有没有可能做到这一点? 如果可能的话,我们如何实现这个?

这很简单,你只需要看看conf / server.xmlconfiguration文件,并为你想要的端口添加一个新的连接器。 例如,如果你有一个这样的连接器:

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /> 

只需添加一个像这样的新连接器,但改变了端口参数。 就这样,重启,你就完成了。

是的,这是可能的,我只是自己testing。 只需编辑server.xml(位于名为conf的文件夹),如下所示:

 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" /> 

这将设置Tomcat监听端口80808081

你可以在/conf/server.xml中定义2个不同的服务。

示例如下,

 <Service name="Catalina_2"> <Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8444" /> <Connector port="8010" protocol="AJP/1.3" redirectPort="8444" /> <Engine name="Catalina_2" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps_2" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> </Engine> </Service> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <Realm className="org.apache.catalina.realm.LockOutRealm"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> </Realm> <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> </Host> </Engine> </Service> 

注意 :您可能需要增加tomcat堆大小。

你可以在你的server.xml中指定下面的代码

 <Service name="sample"> <Connector port="81" protocol="HTTP/1.1" maxThreads="100" connectionTimeout="2000"/> <Engine name="sample" defaultHost="sample"> <Host name="myhostname" appBase="webapp2"> <Context docBase="C:\websites\sample\" /> </Host> </Engine> </Service> 

请确保你在哪个用户上运行Tomcat,因为如果你想在任何特权端口上使用它,你必须在root用户下使用它。

你可以做的另一件事是用iptables将80端口redirect到8080。 像这样的东西:

 iptables -t nat -A PREROUTING -d 192.168.10.16 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080 

希望能帮助到你

在不同的端口运行tomcat。 我们必须在server.xml文件的服务标签内部更改四件东西

  1. 我们必须改变港口号码。 像8080到80
  2. 我们必须改变redirectPort不像8443到8444
  3. 我们必须将引擎名称(如Catalina)更改为Catalina_2
  4. 我们必须将appBase名称更改为webapps到webapps_1