我正在管理一个提供Web管理页面并与客户端应用程序通信的服务器。 我设计了Web部分,允许通过80端口进行公共访问。 但是,我的客户告诉我,他们希望服务器只允许从公司外部的网内访问。 如果Tomcat能够根据IP地址过滤对网页的访问,我认为可以做到这一点。 但是,我最终没有找到适当的解决方案。我知道Tomcat已经根据web项目提供了过滤功能。 我想出了解决这个问题的方法并使用如下: 我在server.xml中创建了两个服务标签,如
<Service name="Catalina">
<Connector port="80" ...>
<Service name="Catalina2">
<Connector port="8080" ...>
为附加服务制作另一个克隆。然后,我通过防火墙设置阻止通过8080端口的所有外部访问。这符合我客户的需求。 但是,我猜这不是一种常见的方式。有时,该设置有时允许不应发生的外部访问。最重要的是,从维护的角度来看,这不是一种有效的方式。
无论如何,我不喜欢它。如果有人告诉我的方式,将不胜感激。 感谢您阅读此问题。
答案 0 :(得分:1)
IP过滤的第一步是配置防火墙/路由器。
您还可以通过创建javax.servlet.Filter。
在Servlet容器中实现简单的IP过滤您可以使用通配符(*
)映射过滤器以使所有请求通过它,并且在过滤器中您可以检查客户端的IP并根据您自己的规则阻止/拒绝为请求提供服务。
Tomcat还附带了一些内置过滤器。你可能想看看它们:
Apache Tomcat 8 Container Provided Filters
内置过滤器包括Remote Address Filter,Remote Host Filter和Remote IP Filter(代理)。这些大多数都是使用正则表达式配置的,可能足以满足您的需求。