Tomcat:限制对/一个/ Web应用程序的本地主机访问

13

我正在运行Tomcat 6来提供几个Web应用程序,其中大多数都是面向公众的。 但是,我想限制对仅一个Web应用程序的访问,仅允许来自本地主机的连接。

我可以使用context.xml中的阀门限制所有 Web应用程序的访问,如以下描述:

但我无法弄清如何基于每个应用程序进行访问限制。 我是否可以在我的应用程序的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>

上下文是“单个应用程序”。每个WAR文件都有自己的上下文。你使用的应用程序定义是什么? - Will Hartung
3个回答

9
您可以为您的应用程序创建一个单独的context.xml。
以下是Tomcat文档中关于上下文配置的摘录: 上下文元素可以被明确地定义:
- 在$CATALINA_HOME/conf/context.xml文件中:Context元素信息将被所有Web应用程序加载。 - 在$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default文件中:Context元素信息将由该主机的所有Web应用程序加载。 - 在$CATALINA_HOME/conf/[enginename]/[hostname]/目录中的单独文件(具有.xml扩展名)。文件的名称(不包括.xml扩展名)将用作上下文路径。多级上下文路径可以使用#定义,例如foo#bar.xml用于上下文路径/foo/bar。默认Web应用程序可以通过使用名为ROOT.xml的文件来定义。 - 仅当$CATALINA_HOME/conf/[enginename]/[hostname]/中不存在应用程序的上下文文件时,在应用程序文件内部的/META-INF/context.xml中的单个文件中。如果Web应用程序打包为WAR,则/META-INF/context.xml将被复制到$CATALINA_HOME/conf/[enginename]/[hostname]/并重命名以匹配应用程序的上下文路径。一旦存在此文件,如果将新的WAR与更新的/META-INF/context.xml放置在主机的appBase中,则不会替换该文件。

2

我尝试允许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接受一个正则表达式,因此点号需要转义。正如Dmitry Negoda所解释的那样,这应该放在/META-INF/context.xml中。

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是你的朋友。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接