Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Tomcat阀设置_Java_Configuration_Tomcat - Fatal编程技术网

Java Tomcat阀设置

Java Tomcat阀设置,java,configuration,tomcat,Java,Configuration,Tomcat,我觉得我被某种配置问题所困扰。我需要保护 从中访问的实际tomcat应用程序中的文件夹 一定的IP范围 我以为这是真的,所以我把问题贴了出来。 现在我不确定是这样还是那样 尽管如此,我还是不断地尝试着自己去做,并且想到了这一点 我需要设置 org.apache.catalina.valves.RemoteAddrValve 为了我的那个文件夹。可悲的是,我只是无法到达我需要的地方 背景web.xml,server.xml?两者都试过了,无效成功。有人能帮忙吗 帮我解决这个问题 短暂性脑缺血发作

我觉得我被某种配置问题所困扰。我需要保护 从中访问的实际tomcat应用程序中的文件夹 一定的IP范围

我以为这是真的,所以我把问题贴了出来。 现在我不确定是这样还是那样

尽管如此,我还是不断地尝试着自己去做,并且想到了这一点 我需要设置

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>