Tomcat Webapp 在端口80上的部署

10
我有一个在tomcat服务器上的webapp,如下所示:
mydomain.com:8080/mywebapp 然后我连接到我的webapp,它正常工作,但我想看到我的webapp像这样:
mydomain.com
因此,我不仅希望tomcat在80端口上运行,也不想通过webapp名称访问我的webapp,我想直接使用域名URI连接。
我该怎么做? 我想在Linux(Ubuntu 12.04 LTS)和Windows服务器上运行。
3个回答

11

有几种方法可以实现这一点,但最常见的解决方法是在其前面运行Apache作为反向代理。您可以在这里找到一些详细信息。这适用于Linux和Windows。对于Linux,您还可以使用authbind允许Tomcat绑定到端口80。 仅仅在server.xml中更改端口号为80在Linux中不起作用,因为这将需要您以root身份启动Tomcat,这不是一个好主意。

此外,要将您的Web应用程序部署在/,您可以将war文件命名为ROOT.war


1
太好了,我想我会使用authbind,按照这些步骤:http://java.dzone.com/articles/running-tomcat-port-80-user - eLRuLL

7

在特权端口(低于1024的端口)上运行任何应用程序都需要特殊权限。如果您这样做,您应该确保您的实例已经 适当加固

要配置Tomcat监听的端口,您需要修改conf/server.xml中的HTTP连接器(服务器参考文档):

<Connector port="80" protocol="HTTP/1.1"
           connectionTimeout="20000"
           redirectPort="8443" />

要更改应用程序的上下文路径,您可以重命名war文件。要将其部署在根目录下,请将war文件重命名为ROOT.war。或者,您可以添加一个META-INF/context.xml,在其中指定所需的上下文路径(上下文参考文档)。
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/" />

我已经尝试了将端口更改为80的方法,但在Linux上它不起作用,也许需要一些额外的步骤,但我不想冒安全风险。 - eLRuLL
这可能是因为Tomcat没有以root身份运行;非root进程不允许绑定到特权端口。另一个很好的解决方法是实现mod_jk或使用Apache设置反向代理。 - ilikeorangutans

1
你需要设置Apache Web服务器并配置它使用Tomcat。
为了配置Apache Web服务器与Tomcat通信,你需要使用mod_jk。
使用此链接来设置mod_jk。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接