0

我在服务器故障上问过这个,但真的没有太多运气,希望这里的人能够提供一些建议......

我有一个运行良好的 Tomcat 6 服务器。我有外部访问权限。我想知道如何防止某人看到特定的 webapps,例如,我不希望外部访问 ROOT tomcat 页面。我将如何阻止某些 webapps 同时让其他 webapps 对外部用户可见?

这是我尝试过的:这会拒绝一切,即使是 127.0.0.1 请求

<Host name="localhost"  appBase="webapps"
                unpackWARs="true" autoDeploy="true"
                xmlValidation="false" xmlNamespaceAware="false">

    <Context path="/examples" docBase="" >
       <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127.0.0.1"/>
    </Context>
  </Host>

这也否定了一切。

<Host name="localhost"  appBase="webapps"
                    unpackWARs="true" autoDeploy="true"
                    xmlValidation="false" xmlNamespaceAware="false">

        <Context path="/examples" docBase="" >
           <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="*"/>
        </Context>
      </Host>

基本上我试图阻止对 ROOT 默认 tomcat 页面和示例应用程序的访问....

有任何想法吗?

4

4 回答 4

2

不能将通配符用于允许属性...另一方面,您可以将通配符用于拒绝属性。

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="*"/>

这就是为什么我用上面的代码得到一个 403 的原因。

我处理这个问题的另一种方法是我创建了一个jsp,将流量重定向到我想要的任何地方。

于 2010-01-27T20:23:24.827 回答
1

看看文档。 http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html

你所拥有的似乎是正确的。它说“如果指定了这个属性,远程地址必须匹配这个请求才能被接受。”

您可能要看的一件事是查看 127.0.0.1 是否真的是正确的 IP。您实际上可能正在使用盒子的实际 IP。尝试在 localhost 之后添加该 IP 地址。

于 2010-01-27T19:51:11.090 回答
1

“allow”属性的值必须使用反斜杠定义,以转义允许的 IP 地址的点:

<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1"/>
于 2011-12-26T19:36:44.277 回答
0

这可能是IPv6问题。这就是我的tomcat6/Catalina/myApp.xml 样子:

<!--<?xml version="1.0" encoding="UTF-8"?> -->
<Context path="/myApp" privileged="true">
     <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1,0:0:0:0:0:0:0:1"/>
</Context>

这可以通过以下方式进行测试,403如果您被拒绝访问,这将产生

wget --inet4-only http://localhost:8080/myApp
于 2012-05-02T15:22:24.263 回答