【问题标题】:Tomcat server IP address restriction methods?Tomcat服务器IP地址限制方法?
【发布时间】:2013-07-08 12:12:49
【问题描述】:

我知道我可以在 tomcat 服务器的 context.xml 中添加一个 Valve 来允许或拒绝某些 IP 地址:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1" denyStatus="403" />

除了上面的配置,还有其他方法可以配置IP限制吗?

例如,我可以使用文本文件或数据库来存储IP地址以进行IP限制建议吗?

非常感谢!!!

【问题讨论】:

    标签: tomcat restriction


    【解决方案1】:

    您可以动态注册 Tomcat 的远程地址过滤器。

    http://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#Remote_Address_Filter

    看起来像这样:

    @WebListener
    public class MyServletContextListener implements ServletContextListener {
      @Override
      public void contextInitialized(ServletContextEvent sce) {
        // Get IP addresses from the DB or text file.
        ...
    
        ServletContext sc = sce.getServletContext();
        FilterRegistration fr;
        fr = sc.addFilter("RemoteAddrFilter", "org.apache.catalina.filters.RemoteAddrFilter");
        fr.addMappingForUrlPatterns(EnumSet.of(DispatcherType.REQUEST), true, "/*");
        fr.setInitParameter("allow", "127\\.0\\.0\\.1");
        fr.setInitParameter("denyStatus", "403");
      }
    }
    

    【讨论】:

    • 谢谢你的回复!!,请问我建立了这个类之后,如何在context.xml中调用这个类????
    • 要使上述类工作,您需要 Tomcat 7,但您不需要任何配置更改。上面的类实现了ServletContextListener,并用@WebListener注解。 Tomcat 自动检测类并在 webapp 启动时调用 contextInitialized。
    • 再次感谢!我需要实际修改哪个/在哪里添加类 MyServletContextListener ?是 *C:\tomcat\bin* 中的 bootstrap.jar 吗?
    • 或者我只需要创建一个包含MyServletContextListener 类的jar 文件,然后将jar 放到c:\tomcat\bin 中?
    • 不,你需要把这个类放到你的webapp中(就像一个servlet类)。
    猜你喜欢
    • 2015-08-16
    • 1970-01-01
    • 2016-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    相关资源
    最近更新 更多