我正在尝试运行 Tomcat 9。我已将其配置为使用 SSL 运行。因此,当我使用以下命令访问 tomcat URL 时:
它运行正常。但是当我尝试使用我的计算机名称运行它时,我收到 403 错误,提示我应该纠正我的 tomcat-users.xml。我已经很好地设置了 XML。但不确定在这种情况下该怎么做。我已经使用我的计算机名称条目设置了 hosts 文件。
我还需要做其他设置才能使其正常工作吗?
我的用户文件有以下条目:
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="manager-jmx"/>
<role rolename="manager-script"/>
<role rolename="manager-status"/>
<user password="admin" roles="manager-gui,admin-gui" username="admin"/>
我也附上了错误屏幕。
答案1
您需要通过更改 Valve 明确允许除本地主机之外的主机访问管理器 GUI ../webapps/manager/META-INF/context.xml
:
原来的:
<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>
或者像这样将其注释掉:
<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修改为您所需要的IP,或者将其添加到列表中。