我在服务器故障时询问了这个问题,但确实没有多少运气,希望有人能提供一些建议......
我有一台运行得很好的Tomcat 6服务器。我有外部访问工作。我想知道如何阻止某人看到特定的webapps,例如,我不希望外部访问ROOT tomcat页面。如何防止一些Web应用程序,同时让其他Web应用程序对外部用户可见?
这是我尝试过的: 这甚至否认了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页面和示例应用程序....
有什么想法吗?
答案 0 :(得分:2)
你不能使用通配符作为allow属性...另一方面,你可以使用一个用于deny属性。
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="*"/>
这就是我使用上述代码获得403的原因。
我处理此问题的另一种方法是创建了一个将流量重定向到我想要的地方的jsp。
答案 1 :(得分:1)
看看文档。 http://tomcat.apache.org/tomcat-6.0-doc/config/valve.html
你所拥有的似乎是正确的。它说“如果指定了这个属性,远程地址必须匹配该请求才能被接受。”
您可能会看到的一件事是查看127.0.0.1是否真的是正确的IP。您可能实际上正在使用该框的实际IP。尝试在localhost之后添加该IP地址。
答案 2 :(得分:1)
必须使用反斜杠定义“allow”属性的值以转义允许的IP地址的点:
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1"/>
答案 3 :(得分: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