2014-10-01 91 views
1

我在Tomcat的7我試圖使用網絡套接字的前面使用Apache 2.4所以我已經配置在Tomcat的基於HTTP的連接器如下面限制Tomcat的HTTP連接器到Apache服務器

<Connector port="8009" protocol="HTTP/1.1" proxyPort="80" maxPostSize="10485760" redirectPort="8443" URIEncoding="UTF-8" /> 

我已經配置Apache 2.4中的mod_proxy和mod_proxy_wstunnel和mod_proxy_http在通過「http://webserver/myapp」訪問應用程序時,Web套接字連接正常工作。

但是,應用程序也可以通過http://webserver:8009/myapp訪問。

我希望我的應用只能通過Apache網絡服務器(http://webserver/myapp)訪問,而不能直接使用tomcat(http://webserver:8009/myapp)。我不能使用AJP模塊(mod_proxy_ajp或mod_jk),因爲AJP模塊不支持Web-sockets。

有沒有一種方法可以將tomcat Connector僅限制在Apache webserver上。

回答

0

在服務器上使用防火牆。這樣你不僅可以使tomcat不可用,而且還可以使用其他任何在該機器上打開端口的進程。

將您希望可用於世界的端口列入白名單,並默認阻止每個其他端口。

+0

Apache在Windows上運行,此服務器解決方案作爲產品銷售,因此添加防火牆是不行的。是不是可以限制tomcat連接器訪問Apache?我也不希望tomcat直接訪問本地主機。 – Deep 2014-10-01 13:55:12

+0

如果它甚至不在本地主機上可用:不需要。 Tomcat應該如何確定一個連接在哪裏(但在本地主機上)?如果您銷售服務器產品,則應該有一些關於如何將其關聯的文檔。即使Windows有一個防火牆 – 2014-10-01 15:21:34

+0

但是,沒有辦法,我可以使用Tomcat和Apache的web-sockets而無需將tomcat直接暴露給外部世界! – Deep 2014-10-02 14:49:10

2

您可以使用它。

<Context path="/manager" docBase="manager" reloadable="true" privileged="true" > 
     <Valve className="org.apache.catalina.valves.RemoteIpValve"/> 
     <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="<your IP regex>"/> 
</Context> 

更改上下文路徑docbase & IP地址中適當的值。這至少會限制到本地主機。

其他方法是在下面的代碼的幫助下只能在本地主機上偵聽tomcat。

<Connector port="8009" address="127.0.0.1"