我希望能够部署一个Tomcat服务器,使其同时监听两个端口(都是HTTP协议)。只有一个服务器实例,但希望在两个端口上侦听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" />
port: 在此连接器上创建服务器套接字并等待传入连接的TCP端口号。您的操作系统只允许一个服务器应用程序在特定IP地址上监听特定端口号。如果使用0(零)的特殊值,则Tomcat将随机选择一个空闲端口来用于此连接器。这通常仅对嵌入式和测试应用程序有用。
redirectPort: 如果此连接器支持非SSL请求,并且接收到需要SSL传输的匹配<security-constraint>
的请求,则Catalina会自动将请求重定向到此处指定的端口号。
<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堆大小。
<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。我们需要更改server.xml文件中服务标签内的四个内容。
iptables -t nat -A PREROUTING -d 192.168.10.16 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080