无法访问Tomcat 8 Manager App

Ecl*_*ica 14 tomcat tomcat8

我刚刚在Ubuntu 14.04 VM上设置了Tomcat 8,我无法http://[hostname]:8080/manager/html从浏览器访问Manager App .点击它后,我收到"403 Access Denied"错误.我正在运行Tomcat作为在配置文件中定义的服务/etc/init.d/tomcat8-dev.该错误消息表明Tomcat设置为最初只能从localhost访问,但由于它是托管VM,因此我无法在其上运行浏览器.

我已在tomcat-users.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-jmx"/>
    <role rolename="manager-gui"/>
    <role rolename="manager-status"/>

    <user username="(redacted)" password="(redacted)" 
        roles="manager-gui,manager-jmx,manager-status,manager-script"/>
</tomcat-users>
Run Code Online (Sandbox Code Playgroud)

这里阅读了Tomcat文档页面后,我也尝试在其中添加<Valve />标签context.xml,如下所示:

<Context privileged="true" antiResourceLocking="false"
    docBase="${catalina.home}/webapps/manager">

    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="127\.0\.0\.1" />
    <!--Another valve for my local machine's IP-->

</Context>
Run Code Online (Sandbox Code Playgroud)

但是,一旦我设置privileged="true",当我使用浏览器连接到服务器时,无论后来提供的阀门如何,我都会得到一个空白的白页.

sudo service tomcat8-dev restart每当我做出更改时,我都会重启我的服务.

我根据我在这里和其他网站上发布的帖子尝试过的其他事情:

  • 我的tomcat用户的各种角色配置
  • 添加address="0.0.0.0"到标签server.xml内部<Connector />
  • 使用initctl而不是根据此处的说明设置服务,这些说明由于某种原因不会在我的服务器上加载默认页面
  • 尝试不同的浏览器,并禁用我的弹出窗口阻止程序

我没有尝试过任何工作.如果您想了解有关我情况的更多详情,请与我们联系.有什么建议?

编辑:问题是我正在编辑错误的context.xml文件.正确的文件在tomcat/webapps/manager/META-INF.我错误地进行了更改tomcat/conf/context.xml.

Rud*_*eld 18

AFAIK Tomcat阻止访问所有主机的Manager App(manager/html),但默认配置为localhost.

为了能够使用http:// [hostname]:8080/manager/html访问管理器GUI,请在配置文件server.xml和manager应用程序的context.xml中配置它:

步骤1:在[tomcat-install-dir] /conf/server.xml中编辑Connector元素并添加IP以及useIPVHosts ="true",即:

<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" 
           address="192.168.0.9" useIPVHosts="true" />
Run Code Online (Sandbox Code Playgroud)

address ="0.0.0.0"可能不是您要在此处插入的内容,因为它将管理器GUI公开给网络上的所有计算机.

步骤2:在[tomcat-install-dir] /webapps/manager/META-INF/context.xml中,编辑Valve元素并添加您的IP:

<Context antiResourceLocking="false" privileged="true">

    <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="192\.168\.0\.9|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
Run Code Online (Sandbox Code Playgroud)

tomcat 8上下文文档

privileged:设置为true以允许此上下文使用容器servlet,例如manager servlet.

antiResourceLocking:如果为true,Tomcat将阻止任何文件锁定.这将显着影响应用程序的启动时间,但允许在可能发生文件锁定的平台或配置上进行完全webapp热部署和取消部署

请注意,我没有像您在尝试的事项列表中提到的那样添加另一个Valve元素,而是编辑现有的,只需添加我的IP(192.168.0.9).

步骤3:重新启动Tomcat,您应该能够使用localhost/127.0.0.1以及主机名/ IP访问管理器GUI.


旁白:关于tomcat-users.xml,Tomcat Manager HOW-TO声明:

建议永远不要将manager-script或manager-jmx角色授予具有manager-gui角色的用户.

所以你可能想在tomcat-users.xml中引入两个用户,即:

  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-status"/>
  <user username="alice" password="whatever" roles="manager-script,manager-jmx"/>
  <user username="bob" password="whatever" roles="manager-gui,manager-status"/>
Run Code Online (Sandbox Code Playgroud)


Thi*_*ran 5

如果您想在所有机器上访问管理器应用程序,您可以简单地做。转到 {Tomcat_install_DIR}/webapps/manager/META-INF/ 并编辑 context.xml put

<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>
Run Code Online (Sandbox Code Playgroud)