Tomcat manager页面403问题
管理账号入口
问题
Tomcat 管理页面如:http://10.10.10.10:8080/manager/html
出现如下错误:
403 Access Denied
1. 配置Tomcat管理用户
进入Tomcat安装目录:
vim conf/tomcat-users.xml
添加配置:
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
重启之后,本机可以访问,但远程访问还是403。
2.修改访问限制
打开 webapps 下的 host-manager
和 manager
,都有一个共同的文件夹META-INF
,里面都有context.xml
,
进入Tomcat目录:
manager:
vim webapps/manager/META-INF/context.xml
host-manager:
vim webapps/host-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.88访问管理页面,那么改成这样就可以:
<Context antiResourceLocking="false" privileged="true" >
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="192.168.88.*" />
</Context>
如果想让所有地址都可以访问,那么注释掉这行 Valve就可以了。
<?xml version="1.0" encoding="UTF-8"?>
<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" />
-->
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
修改完毕,关闭浏览器,重新打开tomcat,问题解决!