在[tomcat]/conf/Catalina/[hostname]
创建文件manager.xml
.
因此,如果您的主机名是www.yourdomainname.com
并且 tomcat 在opt/tomcat7/
其中,那将是:
/opt/tomcat7/conf/Catalina/www.yourdomainname.com/manager.xml
在这个新创建的中,manager.xml
您将RemoteAddrValve
Context 放入:
<Context antiResourceLocking="false" privileged="true" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.0\.0\.1|11\.22\.33\.44" denyStatus="404" />
</Context>
使用管道字符分隔多个 IP 地址。
我选择denyStatus=404
这样可能的侵入者不会有任何线索,甚至存在经理。
重新启动 Tomcat。
2020 年 3 月更新
如果 Tomcat 位于代理服务器后面,则所有请求都来自该代理服务器,因此您需要告诉代理服务器将远程地址转发给 Tomcat(在 Nginx 中您将包含一行proxy_set_header x-forwarded-for $remote_addr;
)。
此外,您需要通过RemoteIpValve
在 Engine 或 Host 块中包含 a 来告诉 Tomcat 监视该转发的标头:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
requestAttributesEnabled="true" />