从本地主机更改为计算机名称会引发 403 错误(Tomcat 9)

从本地主机更改为计算机名称会引发 403 错误(Tomcat 9)

我正在尝试运行 Tomcat 9。我已将其配置为使用 SSL 运行。因此,当我使用以下命令访问 tomcat URL 时:

https://localhost:8443/manager/html

它运行正常。但是当我尝试使用我的计算机名称运行它时,我收到 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"/>

我也附上了错误屏幕。

Tomcat 错误

答案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,或者将其添加到列表中。

相关内容