2014-10-01 97 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"