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

Bos*_*osh 12 security webserver tomcat tomcat6

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

我可以使用context.xml中的valve 来限制对所有 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>
Run Code Online (Sandbox Code Playgroud)

Dmi*_*oda 9

您可以为您的app创建单独的context.xml.

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

  • $CATALINA_HOME/conf/context.xml文件中:Context元素信息将由所有webapps加载.在$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default文件中:Context元素信息将由该主机的所有webapps加载.
  • 在目录中的单个文件(带.xml扩展名)中$CATALINA_HOME/conf/[enginename]/[hostname]/.文件名(减去.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]/命名以匹配应用程序的上下文路径.一旦此文件存在,如果/META-INF/context.xml在主机的appBase中放置了一个带有较新版本的新WAR,则不会替换它.