从不同主机访问Tomcatpipe理器应用程序
我已经在远程服务器上安装了tomcat 9,并启动它后,它被调出罚款,我可以访问http:// host_name:port_num ,看到tomcat hello页面。 但是,当我尝试打开pipe理器应用程序来查看我部署的应用程序时,我得到了403访问被拒绝,我已经在tomcat用户xml中添加angular色,如下所示:
<role rolename="manager"/> <role rolename="manager-gui"/> <role rolename="admin"/> <user username="user" password="password" roles="admin,manager,manager-gui"/>
我看到的错误信息是:
默认情况下,只能通过与Tomcat运行在同一台机器上的浏览器访问主机pipe理器。 如果你想修改这个限制,你需要编辑主机pipe理器的context.xml文件。
我应该如何更改context.xml文件并获得pipe理员应用程序的访问权限?
每个部署的Web应用程序都有一个context.xml
文件
$CATALINA_BASE/conf/[enginename]/[hostname] (conf/Catalina/localhost by default)
并且与webapp(在这种情况下为manager.xml
)具有相同的名称。 如果没有文件,则使用默认值。
所以,你需要创build一个文件conf/Catalina/localhost/manager.xml
并指定你想允许远程访问的规则。 例如,以下内容的manager.xml
将允许从所有机器访问:
<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager"> <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /> </Context>
请注意Valve
元素的allow属性是一个与连接主机的IP地址相匹配的正则expression式。 其他Valve
类可以满足其他规则(例如RemoteHostValve
用于匹配主机名)。
一旦做出上述更改,在访问pipe理器URL时应该显示一个validation对话框。 如果input您在tomcat-users.xml
提供的详细信息,则应该有权访问Manager。
对于Tomcat v8.5.4及以上版本,文件<tomcat>/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>
改变这个文件来评论Valve
:
<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>
之后,刷新浏览器(不需要重新启动Tomcat),你可以看到pipe理页面。