我已经在远程服务器上安装了tomcat 9,启动后,它运行良好,我可以访问http://host_name:port_num并查看tomcat hello页面。但是,当我尝试打开manager应用程序以查看我部署的应用程序时,我的403访问被拒绝,我已经在tomcat用户xml中添加了如下角色:
<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<user username="user" password="password" roles="admin,manager,manager-gui"/>
我看到的错误消息是:
默认情况下,只能从与Tomcat运行在同一台机器上的浏览器访问主机管理器。如果要修改此限制,则需要编辑主机管理器的上下文。xml文件。
我应该如何改变上下文。xml文件并访问manager应用程序?
要从不同的机器访问tomcat管理器,您必须按照以下步骤操作:
1.使用用户和某些角色更新conf/tomcat-users.xml文件:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
此处admin user正在分配角色=“manager gui、manager脚本、manager jmx、manager状态”。
这里tomcat用户和密码是:admin
2.更新webapps/Manager/META-INF/context.xml文件(允许IP地址):
默认配置:
<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" />
<Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>
在Valve中,它只允许本地机器IP以127.\d.\d.\d.\d开头。
2. a:允许特定IP:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|YOUR.IP.ADDRESS.HERE" />
在这里,您只需用您的IP地址替换|YOUR. IP. ADDRESS.在这里
2.b:允许所有IP:
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
allow=".*" />
这里使用allow=“.*”可以允许所有IP。
谢谢:)
每个部署的webapp都有一个上下文。生活在中的xml文件
$CATALINA_BASE/conf/[enginename]/[hostname]
(conf/Catalina/localhost by default)
并且与webapp(manager.xml
)同名。如果不存在文件,则使用默认值。
因此,您需要创建一个文件conf/Catalina/localhost/manager。xml,并指定要允许远程访问的规则。例如,管理器的以下内容。xml将允许从所有计算机访问:
<Context privileged="true" antiResourceLocking="false"
docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="^YOUR.IP.ADDRESS.HERE$" />
</Context>
请注意,Valve
元素的允许属性是一个与连接主机的IP地址匹配的正则表达式。因此,将您的IP地址替换为YOUR. IP. ADDRESS. INE(或其他一些有用的表达式)。
其他Valve
类迎合其他规则(例如RemteHostValve
用于匹配主机名)。早期版本的Tomcat使用阀类org.apache.catalina.valves.RemteIpValve进行IP地址匹配。
完成上述更改后,在访问管理器URL时,应显示一个身份验证对话框。如果您在tomcat用户中输入您提供的详细信息。xml您应该可以访问管理器。
对于Tomcat v8.5.4及更高版本,文件
<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>
更改此文件以注释Valve
:
<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>
之后,刷新浏览器(无需重新启动Tomcat),您可以看到管理器页面。
我有以下内容: 视窗 10 操作系统 -- 主机 Oracle 虚拟盒 -- 来宾计算机 A linux Server (ubuntu) Minikube on Ubuntu for Kubernetes 我编写了一个简单的nodejs应用程序,它应该在虚拟盒子内的端口8087上运行。nodeapp通过kubernetes服务公开,然后我使用“kubectl port-就绪”将请求转发到kuber
我尝试使用IP地址192.168.56.1从我的应用程序连接到主机,但没有成功。我签入了,并且有一个Virtualbox与上述IP连接。有人能帮忙修一下吗?
2017-05-20 15:23:31+0200:env:{“rack.version”=>[1,3],“rack.errors”=>#>,“rack.multithread”=>true,“rack.multiprocess”=>false,“rack.run_once”=>false,“script_name”=>>“query_string”=>>“http/1.1”,“server_sof
我想使用这里描述的端口转发连接到运行在OpenShift (3.9)中的PostgreSQL (9.6)集群。为此,我在一个跳转主机(在OpenShift集群之外)上设置并检查端口转发,如下所示: 因此,端口转发似乎只监听< code>localhost,而不监听主机的其他IP地址。最终,我想从另一个远程主机通过跳转主机连接到数据库,所以“本地主机”是不够的。 我如何设置(OpenShift)端口
我在本地机器上的vbox上托管的ubuntu服务器上安装了openshift源(单节点集群),我需要使用其来自我的主机(客户端)的IP通过Web访问它,但它总是将我的IP重定向到本地主机172.0.0.1,如何克服这个问题?
我有一个docker应用程序,我使用以下docker compose。yml运行它: 我有一个没有docker化的服务器在我的机器上运行,我可以通过访问它。我希望我的服务能够访问它。 我发现有人建议在我的服务配置中添加以下内容: 但是当我添加这个时,并尝试,我得到。当我尝试<code>curl时,也会出现同样的错误http://host.docker.internal:3000。 我拼命地尝试将端