一尘不染

Tomcat阀门设置

tomcat

我认为存在某种配置问题。我需要保护我实际的tomcat应用程序中的一个文件夹,以防止从某个IP范围进行访问。

我认为这是serverfault,所以我张贴的问题存在。现在我不确定这是SO还是SF …

不过,我一直尝试自己动手做,发现我需要设置

org.apache.catalina.valves.RemoteAddrValve

为我的那个文件夹。可悲的是,我只是无法到达进行该设置的位置。web.xml,server.xml?两者都尝试过,没有成功。任何人都可以帮我这个忙。

tia

ķ


阅读 395

收藏
2020-06-16

共1个答案

一尘不染

它应该放在<Context>server.xml中的元素中:

<Context
    path="/tcadmin"
    docBase="${catalina.home}/server/webapps/admin"
    privileged="true"
>
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
        allow="127\.0\.0\.1"
    />
</Context>

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

编辑
:回复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>

阅读链接的文章,了解接受初始参数需要做什么。我认为,根据您的决策,您可以毫不客气地从RequestDumperValve复制代码。

2020-06-16