2013-05-01 99 views
9

我有这样我的tomcat服务器上的Web应用程序:的Tomcat的webapp在端口80

mydomain.com:8080/mywebapp

然后我连接到我的web应用程序,它工作正常,但我希望看到我的webapp像这样:

mydomain.com

所以我不想在端口80只tomcat的,我不想通过其名称来访问我的web应用程序,我想直接用我的域名URI连接。

我该怎么做?我希望这可以与Linux(Ubuntu 12.04 LTS)和Windows服务器一起使用。

回答

9

有几种方式来实现这一点,但最常见的方式来解决它是在其前面运行Apache作为反向代理。你可以找到一些细节here。这将适用于Linux和Windows。对于Linux,您还可以使用authbind来允许Tomcat绑定到端口80. 只需将您的server.xml中的端口更改为80在Linux中将不起作用,因为它需要您启动Tomcat作为root,这不是很好理念。

另外,要让您的webapp在/,您可以将您的war文件部署为ROOT.war

+1

太好了,我想我会使用authbind,使用这些步骤:http://java.dzone.com/articles/running-tomcat-port-80-user – eLRuLL 2013-05-01 21:40:08

1

您需要设置apache web服务器并将其配置为使用tomcat。

您需要使用mod_jk才能配置apache webserver与tomcat通信。使用此link设置mod_jk

6

在特权端口(低于1024的那些端口)上运行任何应用程序都需要特殊权限。如果你这样做,你应该确保你的实例是properly hardened

配置端口tomcat的监听你必须修改conf下的HTTP连接器/ server.xml中(server reference documentation):

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

要更改应用的上下文路径,您可以重命名WAR文件。要将其部署到根目录,请将您的war文件重命名为ROOT.war。或者你可以添加一个META-INF/context.xml的在其中您可以指定所需的上下文路径(context reference docs):

<?xml version="1.0" encoding="UTF-8"?> 
<Context path="/" /> 
+0

我已经尝试了80端口的更改端口,但它不能在Linux上工作,也许它需要一些额外的步骤,但我不想要安全风险。 – eLRuLL 2013-05-01 21:41:36

+0

这可能是因为tomcat没有以root身份运行;不允许非根进程绑定到特权端口。解决这个问题的另一个好方法是实现mod_jk或使用apache设置反向代理。 – ilikeorangutans 2013-05-02 01:08:12