限制Tomcat的HTTP连接器到Apache服务器
问题描述:
我在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上。
答
在服务器上使用防火墙。这样你不仅可以使tomcat不可用,而且还可以使用其他任何在该机器上打开端口的进程。
将您希望可用于世界的端口列入白名单,并默认阻止每个其他端口。
答
您可以使用它。
<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"
Apache在Windows上运行,此服务器解决方案作为产品销售,因此添加防火墙是不行的。是不是可以限制tomcat连接器访问Apache?我也不希望tomcat直接访问本地主机。 – Deep 2014-10-01 13:55:12
如果它甚至不在本地主机上可用:不需要。 Tomcat应该如何确定一个连接在哪里(但在本地主机上)?如果您销售服务器产品,则应该有一些关于如何将其关联的文档。即使Windows有一个防火墙 – 2014-10-01 15:21:34
但是,没有办法,我可以使用Tomcat和Apache的web-sockets而无需将tomcat直接暴露给外部世界! – Deep 2014-10-02 14:49:10