2013-05-01 101 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