我正在运行 Tomcat 6 来为多个 Web 应用程序提供服务,其中大多数是面向公众的。但我想限制访问just onewebapp,仅允许来自本地主机的连接。
我可以限制访问allwebapps 在 context.xml 中使用 Valve,如下所述:
- Tomcat通过IP地址限制访问 https://stackoverflow.com/questions/3381531/tomcat-restrict-access-by-ip-address
但我不知道如何限制每个应用程序的访问。有没有办法用我的应用程序的 web.xml 来做到这一点?或者通过向 context.xml 添加额外的规则?
Thanks,
-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>
您可以为您的应用程序创建单独的 context.xml。
这是 Tomcat 文档中有关上下文配置的摘录:
上下文元素可以明确定义:
- In the
$CATALINA_HOME/conf/context.xml
file:Context元素信息将被所有webapp加载。
在里面$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default
file: Context 元素信息将被该主机的所有 webapp 加载。
- 在单独的文件中(带有
.xml
扩展名)中$CATALINA_HOME/conf/[enginename]/[hostname]/
目录。文件名(减去.xml
) 扩展名将用作上下文路径。多级上下文路径可以使用定义#
, e.g. 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 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)