Tomcat:限制/只有一个/ webapp访问localhost

时间:2011-03-07 19:16:19

标签: security tomcat webserver tomcat6

我正在运行Tomcat 6来提供多个网络应用程序,其中大多数是面向公众的。但是我想限制只访问一个 webapp,只允许来自localhost的连接。

我可以使用context.xml中的阀门限制所有 webapps的访问权限,如下所述:

但我无法弄清楚如何基于每个应用限制访问。有没有办法用我的应用程序的web.xml执行此操作?或者通过向context.xml添加其他规则?

谢谢,

-B


重新安装解决方案:

$ cp /var/lib/tomcat6/conf/context.xml \ 
   /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml

$ cat /var/lib/tomcat6/conf/Catalina/localhost/my-app-name.xml

<Context>
    <Valve className="org.apache.catalina.valves.RemoteHostValve" allow="localhost"/>
... {as previously} ...
</Context>

3 个答案:

答案 0 :(得分:9)

您可以为您的应用创建单独的context.xml。

这是Tomcat doc关于上下文配置的摘录: 可以明确定义上下文元素:

  • $CATALINA_HOME/conf/context.xml文件中:所有Web应用程序都将加载Context元素信息。 在$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default文件中:Context元素信息将由该主机的所有Web应用程序加载。
  • .xml目录中的单个文件(扩展名为$CATALINA_HOME/conf/[enginename]/[hostname]/)中。文件名(少于.xml)扩展名将用作上下文路径。可以使用#来定义多级上下文路径,例如, foo#bar.xml的上下文路径为/foo/bar。可以使用名为ROOT.xml的文件来定义默认Web应用程序。
  • 仅当$CATALINA_HOME/conf/[enginename]/[hostname]/中的应用程序不存在上下文文件时;在应用程序文件中/META-INF/context.xml的单个文件中。如果Web应用程序打包为WAR,则/META-INF/context.xml将被复制到$CATALINA_HOME/conf/[enginename]/[hostname]/并重命名以匹配应用程序的上下文路径。一旦此文件存在,如果在主机的appBase中放置了具有较新/META-INF/context.xml的新WAR,则不会替换该文件。

答案 1 :(得分:1)

允许localhost对我不起作用。我改用RemoteAddrValve。请记住,有些系统使用IPv4地址(您的过滤器必须匹配匹配127.0.0.1),而其他系统使用IPv6地址(匹配完整地址,而不是缩写符号,如::1)。

<Context>
    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
           allow="0:0:0:0:0:0:0:1,127\.0\.0\.1" />
</Context>

属性allow采用正则表达式,因此需要对点进行转义。 explained by Dmitry Negoda/META-INF/context.xml

答案 2 :(得分:0)

转到以下路径:C:\ Program Files \ Apache Software Foundation \ Tomcat 6.0 \ conf \ Catalina \ localhost \

在此路径下,您会找到“manager.xml”文件。

编辑“manager.xml”文件,其中包含以下内容:

  <Valve className="org.apache.catalina.valves.RemoteAddrValve" 
   allow="127.0.0.1,10.100.1.2"/>

  <!-- Link to the user database we will get roles from
  <ResourceLink name="users" global="UserDatabase" 
    type="org.apache.catalina.UserDatabase"/>
  -->

** * ** * 保存并运行服务器.. ..你说对了。 注意:127.0.0.1表示您的系统IP        10.100.1.2 - 这是你的朋友