Tomcat Valve设置

我认为我遇到了一些配置问题。 我需要保护我的实际tomcat应用程序中的文件夹不受某个IP范围的访问。

我以为这是服务器故障 ,所以我在那里发布了问题。 现在我不确定这是SO还是SF呢……

尽管如此,我还是继续尝试自己去做,并认为我需要设置它

org.apache.catalina.valves.RemoteAddrValve 

对于我的那个文件夹。 可悲的是,我无法得到我需要的地方。 web.xml,server.xml? 试过两次,成功无效。 任何人都可以帮我解决这个问题。

TIA

ķ

它应该进入server.xml中的元素:

    

请记住,字符串值是正则表达式模式,因此必须使用反斜杠转义特殊的正则表达式字符(例如点(。))。

编辑 :回复OP的评论。 我认为您需要在Web应用程序中实现FILTER ,并将其配置为根据远程地址IP接受或拒绝请求。 可以从传递给doFilter方法的ServletRequest对象中检索远程地址。

您在web.xml文件中声明了一个filter:

  GatekeeperFilter your.package.GatekeeperFilter  allowedNetwork 192\.168\.2\.*    GatekeeperFilter /path/to/protected/folder  

阅读链接文章,了解接受init参数需要做些什么。 我认为,对于您的决策,您可以无耻地复制RequestDumperValve中的代码。

您需要将它放在元素中,该元素定义了相关的Web应用程序。

对于Tomcat,它可以是几个地方,在每个webapp特定的(和webapp控制的)/ /META-INF/context.xml/META-INF/context.xml或服务器特定的(和服务器控制的) /conf/[enginename]/[hostname]/context.xml或特定于服务器的全局/conf/context.xml或特定于主机的/conf/server.xml 。 另请参阅Tomcat Context文档 。

上周你有同样的需求(但出于其他原因)并创建了一个阀门来阻止路径请求。 它基于org.apache.catalina.valves.RequestFilterValve

用法:

阀门可以像任何阀门一样用在发动机,主机或上下文中,可在GitHub上使用。 http://github.com/xlson/tomcat-valves

如果能解决您的问题,我建议您在应用程序中使用默认的tomcat阀门或servletfilter。 我们需要定制阀门的原因是,即使我们在应用程序的元素中使用RemoteAddrValve ,tomcat管理应用程序Psi-Probe的某些部分也会“泄漏”。

Tomcat Valve可以应用于整个Engine,Host或特定的Context(webapp)。 您必须为整个应用程序使用它,而不是特定的路径或目录。

您应该在META-INF / context.xml或conf / Catalina / [host]目录中的上下文片段中进行设置。 例如,

  ...