2011-03-07 46 views
12

我正在运行Tomcat 6来为几个Web应用程序提供服务,其中大部分都是面向公众的。但我想限制访问只有一个 web应用程序,只允许从本地主机连接。Tomcat:限制访问本地主机的/只有一个/ webapp

但我不能想出如何在限制访问:

在描述我可以限制使用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> 
+0

上下文是一个“单一的应用程序”。每个WAR都是它自己的上下文。你使用的是什么定义的应用程序? – 2011-03-07 19:19:36

回答

9

您可以为应用程序创建一个单独的context.xml。

这是从Tomcat文档上下文configuraion的摘录: 上下文元素可被明确定义:

  • $CATALINA_HOME/conf/context.xml文件:上下文元素信息将被所有web应用被加载。 在$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default文件中:上下文元素信息将被该主机的所有webapp加载。
  • $CATALINA_HOME/conf/[enginename]/[hostname]/目录中的单个文件(扩展名为.xml)中。该文件的名称(少于.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

允许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

0

转到以下路径:C:\ Program Files文件\ Apache软件基金会\ 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 - 这是您的朋友

相关问题