从不同主机访问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理页面。