无法访问Tomcat 8 Manager App

时间:2016-07-19 22:24:36

标签: tomcat tomcat8

我刚刚在Ubuntu 14.04虚拟机上设置了Tomcat 8,但我无法从浏览器访问http://[hostname]:8080/manager/html的经理应用程序。我得到一个" 403拒绝访问"我点击它就会出错。我正在运行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>

在阅读Tomcat文档页面here之后,我还尝试将<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>

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

每当我进行更改时,我都会使用sudo service tomcat8-dev restart重启我的服务。

我根据我在此处和其他网站上发布的帖子尝试了其他一些事情:

  • 我的tomcat用户的各种角色配置
  • address="0.0.0.0"代码
  • 中添加server.xml<Connector />
  • 使用initctl而不是根据here设置服务,因为某些原因我的服务器上没有加载默认页面
  • 尝试使用不同的浏览器,并禁用弹出窗口拦截器

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

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

7 个答案:

答案 0 :(得分:16)

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" />

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>

来自tomcat 8 context documentation

  

特权:设置为true以允许此上下文使用容器   servlet,就像经理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"/>

答案 1 :(得分:0)

你应该改变:

docBase="${catalina.home}/webapps/manager"

为:

docBase="${catalina.base}/webapps/manager"

这是因为您不使用从上游分发的Tomcat,而是使用Ubuntu附带的Tomcat。

答案 2 :(得分:0)

我认为这对你们所有人都有帮助,因为它对我有用。

我在这里使用Apache tomcat 8:

root@akash-LIFEBOOK-A555:/opt/apache-tomcat-8.5.20/bin# ./version.sh 
Using CATALINA_BASE:   /opt/apache-tomcat-8.5.20
Using CATALINA_HOME:   /opt/apache-tomcat-8.5.20
Using CATALINA_TMPDIR: /opt/apache-tomcat-8.5.20/temp
Using JRE_HOME:        /DATA/jre1.8.0_131/
Using CLASSPATH:       /opt/apache-tomcat-8.5.20/bin/bootstrap.jar:/opt/apache-tomcat-8.5.20/bin/tomcat-juli.jar
Server version: Apache Tomcat/8.5.20
Server built:   Aug 2 2017 21:35:49 UTC
Server number:  8.5.20.0
OS Name:        Linux
OS Version:     4.4.0-98-generic
Architecture:   amd64
JVM Version:    1.8.0_131-b11
JVM Vendor:     Oracle Corporation

编辑tomcat-user.xml并添加角色和用户

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

答案 3 :(得分:0)

我也遇到了同样的问题,我首先在config / tomcat-users.xml中添加了角色用户和passowrd,然后在webapps / manager / META-INF / context.xml中允许了我的公共IP。 最初在同一台计算机上为使用管理器添加了本地ip 127。在那里添加你的ip

答案 4 :(得分:0)

如果您想访问所有计算机上的管理器应用程序,则可以简单地进行操作。转到{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>

答案 5 :(得分:0)

更新'apache-tomcat-8.5.5 \ webapps \ manager \ META-INF \ context.xlm文件。取消注释Value标签。并重新启动服务器

context.xml文件

Before : 

<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>

After change :

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

for auto deployment: go to 'apache-tomcat-8.5.5\conf\context.xml' and add antiResourceLocking="true" in 'Context' tag

答案 6 :(得分:0)

对于我来说,除了将具有管理员角色的管理员用户放在 tomcat-users.xml 中之外,我还必须修改 /webapps 下管理员和主机管理器应用程序的 2 个 /META-INF/context.xml 文件,内容如下: 127 -> \d+ 因此将使任何外部电脑的浏览器访问其管理器站点change 127 localhost IP to any vistors' IP