我认为我遇到了一些配置问题。我需要保护 从我的实际tomcat应用程序中访问的文件夹 某个IP范围。
我认为这是serverfault,所以我发布了问题there。 现在我不确定这是SO还是SF呢......
尽管如此,我一直在努力尝试自己去做并想出来 我需要设置
org.apache.catalina.valves.RemoteAddrValve
我的那个文件夹。可悲的是,我无法得到我需要的地方 设置。 web.xml,server.xml?试过这两个,成功无效。任何人都可以 帮助我解决这个问题。
TIA
ķ
答案 0 :(得分:7)
它应该进入server.xml中的<Context>
元素:
<Context
path="/tcadmin"
docBase="${catalina.home}/server/webapps/admin"
privileged="true"
>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1"
/>
</Context>
请记住,字符串值是正则表达式模式,因此必须使用反斜杠转义特殊的正则表达式字符(例如点(。))。
编辑:回复OP的评论。
我认为您需要在Web应用程序中实现FILTER并将其配置为根据远程地址IP接受或拒绝请求。可以从传递到ServletRequest
方法的doFilter
对象中检索远程地址。
您在web.xml文件中声明了一个过滤器:
<filter>
<filter-name>GatekeeperFilter</filter-name>
<filter-class>your.package.GatekeeperFilter</filter-class>
<init-param>
<param-name>allowedNetwork</param-name>
<param-value>192\.168\.2\.*</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>GatekeeperFilter</filter-name>
<url-pattern>/path/to/protected/folder</url-pattern>
</filter-mapping>
阅读链接文章,了解接受init参数需要做些什么。我认为,对于您的决策,您可以无耻地复制RequestDumperValve中的代码。
答案 1 :(得分:4)
您需要将其放在<Context>
元素中,该元素定义相关的Web应用程序。
对于Tomcat,它可以是多个位置,在每个特定于webapp(和webapp控制)/META-INF/context.xml
或特定于服务器(和服务器控制)/conf/[enginename]/[hostname]/context.xml
或特定于服务器的全局下/conf/context.xml
或特定主机/conf/server.xml
。另请参阅Tomcat Context documentation。
答案 2 :(得分:3)
上周有同样的需求(但出于其他原因)并创建了一个阀门来阻止路径请求。它基于org.apache.catalina.valves.RequestFilterValve
。
用法:
<Valve className="se.qbranch.tomcat.valve.BlockAccessByPathValve" path="/manager/.*" allow="127\.0\.0\.1"/>
阀门可以像任何阀门一样在发动机,主机或上下文中使用,并且可以在GitHub上使用。 http://github.com/xlson/tomcat-valves
如果能解决您的问题,我建议您在应用程序中使用默认的tomcat valve或servlet过滤器。我们需要自定义阀门的原因是,即使我们在应用程序的RemoteAddrValve
元素中使用了<Context>
,tomcat管理应用程序Psi-Probe的某些部分也会“泄漏”。
答案 3 :(得分:2)
Tomcat Valve可以应用于整个引擎,主机或特定的上下文(webapp)。您必须为整个应用程序使用它,而不是特定的路径或目录。
您应该在META-INF / context.xml或conf / Catalina / [host]目录中的上下文片段中进行设置。例如,
<Context path="/myapp" ...>
...
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="10.1.2.*"/>
</Context>