Apache Tomcat/8.5.3管理器应用程序403错误

Apache Tomcat/8.5.3管理器应用程序403错误,tomcat,amazon-web-services,tomcat8,Tomcat,Amazon Web Services,Tomcat8,我让tomcat在aws上的ubuntu实例上运行,我可以成功地访问,如果您看到这一点,您已经成功地安装了tomcat。恭喜你页面,但当我点击管理器应用程序时,我立即被导航到403拒绝访问页面 我编辑了tomcat users.xml文件,使其具有manager gui角色,甚至使用户具有manager状态和manager脚本 然后,我使用bin/shutdown.sh关闭服务器,导航到页面以检查它是否已实际关闭,然后执行bin/startup.sh以重新启动它 但每当我点击Manager应用程

我让tomcat在aws上的ubuntu实例上运行,我可以成功地访问
,如果您看到这一点,您已经成功地安装了tomcat。恭喜你页面,但当我点击
管理器应用程序时,我立即被导航到
403拒绝访问
页面

我编辑了
tomcat users.xml
文件,使其具有manager gui角色,甚至使用户具有manager状态和manager脚本

然后,我使用
bin/shutdown.sh
关闭服务器,导航到页面以检查它是否已实际关闭,然后执行
bin/startup.sh
以重新启动它

但每当我点击
Manager应用程序
按钮时,它甚至都不会打开用户名/密码框,而是直接进入403页

我还缺什么吗

编辑:这是我的整个用户xml文件

<?xml version='1.0' encoding='utf-8'?>

<tomcat-users xmlns="http://tomcat.apache.org/xml"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd"
              version="1.0">

  <role rolename="manager-script"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-status"/>
  <user username="admin" password="myPassword" roles="manager-gui,manager-status,manager-script"/>

</tomcat-users>

您需要为Manager应用程序创建上下文,并允许从Tomcat 8.5.x进行访问

$CATALINA_BASE/conf/CATALINA/localhost/
主页下创建一个文件管理器.xml

<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /></Context>
manager.xml内容,请注意我的源代码是172.31.254.37(我的计算机),请将其更改为您的源代码:

<Context privileged="true" antiResourceLocking="false"
         docBase="${catalina.home}/webapps/manager">
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="172\.31\.254\.37" />
</Context>
亲切问候,


雅克·德贾格尔(Jacques de Jager)

这帮助我让它工作起来。

您需要将manager.xml添加到conf/Catalina/localhost

根据文件:

“默认Tomcat安装包括Manager。要将Manager web应用程序上下文的实例添加到新主机,请在$CATALINA_BASE/conf/[engineame]/[hostname]文件夹中安装Manager.xml上下文配置文件”

例如,在我的例子中,我有以下路径:/opt/tomcat/conf/Catalina/localhost

manager.xml的示例

<Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^.*$" /></Context>

我认为另一种解决方法是编辑应用程序中默认存在的context.xml文件:

$CATALINA_HOME/webapps/manager/META-INF/context.xml

在Tomcat 8.5之前,此处的阀门已被注释掉:

<Context antiResourceLocking="false" privileged="true" >
  <!--
    Remove the comment markers from around the Valve below to limit access to
    the manager application to clients connecting from localhost
  -->
  <!--
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
  -->
</Context>

但在8.5中,它似乎默认未注释。如8.5x迁移指南所述:

从8.0.x迁移到8.5.x

本节列出了8.0.x和8.5.x之间的所有已知更改,这些更改在升级时可能会导致向后兼容性问题

网络应用程序

默认情况下,Manager和HostManager web应用程序配置有RemoteAddrValve,该远程AddrValve将对这些应用程序的访问限制为来自本地主机的连接



总之,我认为您可以调整应用程序中的context.xml,或者创建一个新的manager.xml文件并调整该context元素,如上所述。

user.xml对我来说没问题。你在换正确的吗?@DiogoSantana我想是的,我没想到会有另一个。有没有办法让我看看是否有倍数?顺便问一下,你有没有试过Psi探测器而不是Tomcat Manager?这取决于你的ubuntu配置。。。我不使用ubuntu@DiogoSantana不,我不知道,但我会看一看。这个解决方案用于访问Tomcat Web应用程序管理器
localhost:8080/Manager/html
。为了访问Tomcat虚拟主机管理器
localhost:8080/Host Manager/html
,您还需要编辑
$CATALINA\u HOME/webapps/Host Manager/META-INF/context.xml
,并将
添加到
Tomcat用户.xml
。我使用的是Tomcat 8.5。假设您已将角色和用户添加到Tomcat-users.xml文件中。您可以使用此技巧使用停靠的tomcat服务器访问管理器!在docker文件中,从tomcat基本映像开始,如“FROM tomcat:9.0.14-jre11-slim”,然后在manager.xml文件中创建上面行的文件夹echos。Github Gist