我想部署一个Tomcat服务器,使得它同时监听两个端口(无论是HTTP协议)。
只是为了确保你理解这个要求correclty,我们只有一个服务器实例,但要听两个端口的HTTP协议。 例如任何人都可以使用的端口号7080和8080访问部署在我的服务器应用程序
是否有可能做到这一点? 如果可能的话,我们如何才能实现这一目标?
我想部署一个Tomcat服务器,使得它同时监听两个端口(无论是HTTP协议)。
只是为了确保你理解这个要求correclty,我们只有一个服务器实例,但要听两个端口的HTTP协议。 例如任何人都可以使用的端口号7080和8080访问部署在我的服务器应用程序
是否有可能做到这一点? 如果可能的话,我们如何才能实现这一目标?
这是非常简单的。 你只需要看看的conf/server.xml
的配置文件,添加一个新的连接器,您需要的端口。 举例来说,如果你有这样的连接器:
<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="UTF-8" />
只需添加与上述相同的配置文件中新的连接器,但改变端口参数。 就这样。 重新启动即可大功告成。
对的,这是可能的。 只需编辑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来听两个端口8080和8081。
该documenation状态:
端口:在此连接器将创建一个服务器套接字并等待传入连接的TCP端口号。 您的操作系统将只允许一个服务器应用程序,听取他们对特定IP地址的特定端口号。 如果使用的0(零)的特殊值,则Tomcat将随机选择一个空闲的端口用于此连接器。 这是典型的只在嵌入式和测试应用程序非常有用。
redirectPort:如果此连接器是支持非SSL请求,并且在接收到请求针对其匹配<security-constraint>
需要SSL传输,卡塔利娜将自动重定向请求到这里指定的端口号。
因此,改变redirectPort是可选的,这取决于你怎么想这样的重定向工作。
您可以在/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 "%r" %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 "%r" %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用户下。
你可以做的另一件事是80端口重定向到8080使用iptables。 事情是这样的:
iptables -t nat -A PREROUTING -d 192.168.10.16 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
希望能帮助到你
Tomcat运行在不同的端口。 我们必须改变server.xml文件中的服务标签内的四件事