我刚刚在Ubuntu 14.04 VM上设置了Tomcat 8,但无法http://[hostname]:8080/manager/html从浏览器访问Manager应用程序。单击它后,我收到“ 403访问被拒绝”错误。我正在将Tomcat作为服务在中的配置文件中定义/etc/init.d/tomcat8-dev。错误消息表明Tomcat最初设置为仅可从本地主机访问,但是由于它是托管VM,因此我无法在其上运行浏览器。
http://[hostname]:8080/manager/html
/etc/init.d/tomcat8-dev
我已经tomcat- users.xml按照几个人的建议在文件中设置了一个用户。但是,没有提示我提供该用户的凭据,并且在默认页面上找不到任何类型的登录按钮。该文件当前如下所示:
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文档页面之后,我还尝试过将<Valve />标签添加到context.xml看起来像这样的地方:
<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",无论我随后提供什么功能,使用浏览器连接到服务器时,我都会得到白页。
privileged="true"
sudo service tomcat8-dev restart每当我进行更改时,我都会重新启动服务。
sudo service tomcat8-dev restart
根据我在此处和其他网站上发布的帖子,我尝试了其他操作:
address="0.0.0.0"
server.xml
<Connector />
initctl
我没有尝试过任何工作。如果您想了解我的情况的更多详细信息,请告诉我。有什么建议么?
编辑: 问题是我编辑了错误的context.xml文件。正确的文件在中tomcat/webapps/manager/META- INF。我错误地对进行了更改tomcat/conf/context.xml。
tomcat/webapps/manager/META- INF
tomcat/conf/context.xml
AFAIK Tomcat在其默认配置中阻止除本地主机以外的所有主机对Manager App(manager / html)的访问。
为了能够使用http:// [主机名]:8080 / manager / html访问管理器GUI ,请在管理器应用程序的配置文件 server.xml 和 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上下文文档
privileged :设置为true允许此上下文使用容器servlet,例如管理器servlet。 antiResourceLocking :如果为true,则Tomcat将阻止任何文件锁定。这将显着影响应用程序的启动时间,但允许在可能发生文件锁定的平台或配置上进行完整的Webapp热部署和取消部署
privileged :设置为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-gui角色的用户授予manager-script或manager-jmx角色。
因此,您可能想在 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"/>