在两个不同的端口上运行Tomcat服务器(Running Tomcat server on two

2019-07-21 01:01发布

我想部署一个Tomcat服务器,使得它同时监听两个端口(无论是HTTP协议)。

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

是否有可能做到这一点? 如果可能的话,我们如何才能实现这一目标?

Answer 1:

这是非常简单的。 你只需要看看的conf/server.xml的配置文件,添加一个新的连接器,您需要的端口。 举例来说,如果你有这样的连接器:

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

只需添加与上述相同的配置文件中新的连接器,但改变端口参数。 就这样。 重新启动即可大功告成。



Answer 2:

对的,这是可能的。 只需编辑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。

该documenation状态:

  • 端口:在此连接器将创建一个服务器套接字并等待传入连接的TCP端口号。 您的操作系统将只允许一个服务器应用程序,听取他们对特定IP地址的特定端口号。 如果使用的0(零)的特殊值,则Tomcat将随机选择一个空闲的端口用于此连接器。 这是典型的只在嵌入式和测试应用程序非常有用。

  • redirectPort:如果此连接器是支持非SSL请求,并且在接收到请求针对其匹配<security-constraint>需要SSL传输,卡塔利娜将自动重定向请求到这里指定的端口号。

因此,改变redirectPort是可选的,这取决于你怎么想这样的重定向工作。



Answer 3:

您可以在/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的堆大小。



Answer 4:

您可以在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>


Answer 5:

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

你可以做的另一件事是80端口重定向到8080使用iptables。 事情是这样的:

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

希望能帮助到你



Answer 6:

Tomcat运行在不同的端口。 我们必须改变server.xml文件中的服务标签内的四件事

  1. 我们必须改变端口号。 像8080〜80
  2. 我们必须改变redirectPort没有像8443至8444
  3. 我们要像卡特琳娜更改引擎名称Catalina_2
  4. 我们要改变的appBase名状的webapps到webapps_1


文章来源: Running Tomcat server on two different ports
标签: java tomcat port