Java Tomcat阀设置
我觉得我被某种配置问题所困扰。我需要保护 从中访问的实际tomcat应用程序中的文件夹 一定的IP范围 我以为这是真的,所以我把问题贴了出来。 现在我不确定是这样还是那样 尽管如此,我还是不断地尝试着自己去做,并且想到了这一点 我需要设置Java Tomcat阀设置,java,configuration,tomcat,Java,Configuration,Tomcat,我觉得我被某种配置问题所困扰。我需要保护 从中访问的实际tomcat应用程序中的文件夹 一定的IP范围 我以为这是真的,所以我把问题贴了出来。 现在我不确定是这样还是那样 尽管如此,我还是不断地尝试着自己去做,并且想到了这一点 我需要设置 org.apache.catalina.valves.RemoteAddrValve 为了我的那个文件夹。可悲的是,我只是无法到达我需要的地方 背景web.xml,server.xml?两者都试过了,无效成功。有人能帮忙吗 帮我解决这个问题 短暂性脑缺血发作
org.apache.catalina.valves.RemoteAddrValve
为了我的那个文件夹。可悲的是,我只是无法到达我需要的地方
背景web.xml,server.xml?两者都试过了,无效成功。有人能帮忙吗
帮我解决这个问题
短暂性脑缺血发作
K它应该放在server.xml中的
元素中:
<Context
path="/tcadmin"
docBase="${catalina.home}/server/webapps/admin"
privileged="true"
>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1"
/>
</Context>
阅读链接文章,了解接受init参数需要做些什么。我认为你可以无耻地从requestdumperve复制代码来做决定。你需要把它放在定义相关Web应用程序的
元素中
对于Tomcat,它可以是多个位置,在每个位置下是特定于webapp(和webapp控制的)
/META-INF/context.xml
或特定于服务器(和服务器控制的)/conf/[engineame]/[hostname]/context.xml
或特定于服务器的全局/conf/context.xml
或特定于主机的/conf/server.xml
。另请参见。Tomcat阀可应用于整个发动机、主机或特定环境(webapp)。你必须对整个应用程序使用它,而不是特定的路径或目录
您应该在META-INF/context.xml或conf/Catalina/[host]目录中的上下文片段中设置它。比如说,
<Context path="/myapp" ...>
...
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="10.1.2.*"/>
</Context>
...
与您上周的需求相同(但出于其他原因),并创建了一个阀来按路径阻止请求。它基于org.apache.catalina.valves.RequestFilterValve
用法:
该阀可以在引擎、主机或环境中使用,就像任何阀门一样,并且可以在GitHub上使用
我建议在应用程序中使用默认的tomcat阀或servlet过滤器,如果这样可以解决问题的话。我们需要定制阀门的原因是,tomcat管理应用程序的某些部分会“泄漏”,即使我们在应用程序的
元素中使用了RemoteAddrValve
。第一个thx用于快速回答,(+1)。遗憾的是,这似乎还不起作用。到目前为止,我的server.xml中还没有上下文部分。实际上,应用程序本身应该是全世界都可以访问的。只有一个文件夹在那里,基本上一个文件夹包含一些pdf的应该只能由某些IP访问。在应用程序中有一个指向该文件夹的简单a href链接。如果客户来自我的内部网络,一切正常。如果客户端是外部的,则不应为其打开文件夹。我的方法仍然正确吗?我在回答中添加了一个关于过滤器的部分。我想这是你需要的。很有帮助。通过这样做,我可以将我的站点限制为适当的IPv4块。然而,它似乎不适用于IPv6。有没有其他方法可以做到这一点,或者Tomcat仍然没有完全的IPv6支持?@BrianKnoblauch,Tomcat确实支持IPv6,请看,它需要一个自定义的Tomcat版本来支持IPv6(预构建的二进制文件似乎不支持它)。到目前为止,还无法找到正确的依赖项/选项组合,以使用IPv6完整构建Tomcat。所以,是的,它支持它,但祝你好运,让它真正运行起来
<Context path="/myapp" ...>
...
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="10.1.2.*"/>
</Context>