版本:Tomcat 8
问题:新安装的tomcat,用其他机器访问tomcat的Server Status、Manager App、Host Manager三个页面均显示403,用本机访问127.0.0.1没有问题。
conf/tomcat-users.xml里已添加配置如下:
<role rolename="manager-gui"/> <role rolename="admin-gui"/> <user username="tomcat" password="qazwsx" roles="manager-gui,admin-gui"/>
既然127.0.0.1能访问,说明这里配置肯定没问题,原因可能在其他地方。
查找网上解决办法无果,大部分网上的文章都只提到了在tomcat-users.xml里添加上面的语句,无法解决,通过查阅官方文档,终于找到真正原因所在。
打开webapps下manager,有一个META-INF目录,里面都有context.xml,这个文件的内容是:
<Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /> </Context>
通过查看官方文档,知道,这段代码的作用是限制来访IP的,127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1,是正则表达式,表示IPv4和IPv6的本机环回地址,所以这也解释了,为什么我们本机可以访问管理界面,但是其他机器确是403。
找到原因了,那么修改一下这里的正则表达式即可,比如我们只允许内网网段192.168.100.0/24访问管理页面,那么改成这样就可以:
<Context antiResourceLocking="false" privileged="true" > <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|192.168.100.*" /> </Context>
修改完毕,关闭浏览器,重新打开tomcat,问题解决!