Tomcat7以上403 Access Denied错误

版本:Tomcat 9

问题:新安装的tomcat,访问tomcat的Server Status、Manager App、Host Manager三个页面均显示403,conf/tomcat-users.xml里已添加配置:

<user username="tomcat" password="123456" roles="admin-gui,manager-gui" />

01

重启之后,还是403.

查找网上解决办法无果,大部分网上的文章都只提到了在tomcat-users.xml里添加上面的语句,无法解决,通过查阅官方文档,终于找到真正原因所在(Tomat7不需要修改下面这两个文件只有Tomcat7以上才需要修改)。

打开webapps下的host-managermanager,都有一个共同的文件夹META-INF,里面都有context.xml,这个文件的内容是:

02

<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。

找到原因了,那么修改一下这里的正则表达式即可,我们修改为所有人都可以访问,那么改成这样就可以:

<Context antiResourceLocking="false" privileged="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="^.*$" />
</Context>

03

修改完毕,关闭浏览器,重新打开tomcat,问题解决!


(1)