我刚刚在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
重启我的服务。
我根据我在此处和其他网站上发布的帖子尝试了其他一些事情:
address="0.0.0.0"
代码server.xml
到<Connector />
initctl
而不是根据here设置服务,因为某些原因我的服务器上没有加载默认页面我没有尝试过任何作品。如果您想了解有关我情况的更多详情,请与我们联系。有什么建议吗?
编辑:问题是我正在编辑错误的context.xml
文件。正确的文件位于tomcat/webapps/manager/META-INF
。我错误地对tomcat/conf/context.xml
进行了更改。
答案 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+ 因此将使任何外部电脑的浏览器访问其管理器站点