Tomcat Manager是Tomcat自带的、用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。Tomcat是Java领域使用最广泛的服务器之一,因此Tomcat Manager也成为了使用非常普遍的功能应用。
在默认情况下,Tomcat Manager是处于禁用状态的。准确地说,Tomcat Manager需要以用户角色进行登录并授权才能使用相应的功能,不过Tomcat并没有配置任何默认的用户,因此需要我们进行相应的用户配置之后才能使用Tomcat Manager。
Tomcat Manager的用户配置是在Tomcat安装目录/conf/tomcat-users.xml
文件中进行管理的。
Question1:如何添加角色
Tomcat Manager的用户配置非常简单,下面我们以一个具体的配置为例:
<tomcat-users> <role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="tomcat" password="tomcat" roles="manager-gui"/> <user username="admin" password="123456" roles="manager-script"/> </tomcat-users>
如上所示,我们只需要在tomcat-users
节点中配置相应的role
(角色/权限)和user
(用户)即可。一个user
节点表示单个用户,属性username
和password
分别表示登录的用户名和密码,属性roles
表示该用户所具备的权限。
user
节点的roles
属性值与role
节点的rolename
属性值相对应,表示当前用户具备该role节点所表示的角色权限。当然,一个用户可以具备多种权限,因此属性roles
的值可以是多个rolename
,多个rolename
之间以英文逗号隔开即可。
稍加思考,我们就应该猜测到,rolename
的属性值并不是随意的内容,否则Tomcat怎么能够知道我们随便定义的rolename
表示什么样的权限呢。实际上,Tomcat已经为我们定义了4种不同的角色——也就是4个rolename
,我们只需要使用Tomcat为我们定义的这几种角色就足够满足我们的工作需要了。
以下是Tomcat Manager 4种角色的大致介绍(下面URL中的*为通配符):
manager-gui
允许访问html接口(即URL路径为/manager/html/*)
manager-script
允许访问纯文本接口(即URL路径为/manager/text/*)
manager-jmx
允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)
manager-status
允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)
从Tomcat Manager内部配置文件中可以得知,manager-gui
、manager-script
、manager-jmx
均具备manager-status
的权限,也就是说,manager-gui
、manager-script
、manager-jmx
三种角色权限无需再额外添加manager-status
权限,即可直接访问路径/manager/status/*。
Question2:访问的IP限制解决方案
新安装的tomcat,访问tomcat的Server Status、Manager App、Host Manager三个页面均显示403,conf/tomcat-users.xml里已添加配置:
(Tomat7不需要修改下面这两个文件只有Tomcat7以上才需要修改)。
打开webapps下的host-manager和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。
找到原因了,那么修改一下这里的正则表达式即可,我们修改为所有人都可以访问,那么改成这样就可以:
1 2 3 4 |
|