tomcat - 阻止tomcat webapp上的特定瓮
问题描述
有一个特定的需求,我们需要在网络应用程序下阻止特定的骨灰盒 例如,我们有一个网络应用程序 /siebel ,在它 /siebel/app/ 下这应该可以工作,但 /siebel/smc 不应该
尝试在 /META-INF 文件夹 context.xml 下提供上下文路径
<Context path="/siebel/smc" debug="0" privileged="true">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127.0.0.1"/>
</Context>
也试过
<Context antiJARLocking="true" path="/siebel/smc">
<Valve className="org.apache.catalina.valves.RemoteIpValve" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1" />
</Context>
这最终会阻止 URL /siebel/smc 和 /siebel/app
也尝试在 server.xml 中添加上下文路径,结果相同。使用 deny="*" 使用拒绝选项,但仍然相同。
有没有办法处理这个?
谢谢
解决方案
好吧。您有正确的想法,但将其应用在错误的位置。META-INF/context.xml
仅适用于它所在的 Web 应用程序,并且忽略 path 属性(路径将从 WAR/dir 名称派生)。
我假设您在webapps/siebel.war
or部署了一个 Web 应用程序,webapps/siebel
并且该 Web 应用程序的上下文路径是“/siebel”。
我们将利用 Servlet 规范的要求,即在将 URI 与 Web 应用程序、过滤器和 servlet 匹配时,第一步是通过查找最长匹配上下文路径来选择 Web 应用程序。因此,如果我们部署一个新的 Web 应用程序/siebel/smc
并阻止所有访问,这应该会产生您想要的效果。
假设默认的 Tomcat 安装(引擎和主机名不变)将以下内容放在$CATALINA_BASE/conf/Catalina/localhost/siebel#smc.xml
<Context>
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny=".*"/>
</Context>
您还需要创建空目录$CATALINA_BASE/webapps/siebel#smc
推荐阅读
- python-3.x - 让 PANDAS 识别 DF 值内的 PATTERN
- flutter - 坏:错误:字段“_prenom”应该被初始化,因为它的类型“字符串”不允许为空
- excel - 从 Powerpoint 宏 (VBA) 管理工作簿
- ffmpeg - 如何将 FFMpeg 编解码器与基于 Linux 的 C++ 项目链接?
- google-analytics - 维基媒体页面上的谷歌分析
- r - 最小生成树的循环不起作用
- mysql - 数据库设计:什么时候不使用外键?
- postgresql - 在 Golang 上使用 LEFT JOIN 并映射到结构
- python - 在不同于 localhost:8888 的 url 上运行的 jupyter notebook 中内联运行散景应用程序
- visual-studio-code - 记事本++在Visual Studio Code中保存会话等价物?