记一次失败的tomcat8 manager配置

       公司本地测试环境老项目一直用的tomcat7.0.57 前段时间更新了个war包上去,居然报了一个nomethodfound错误,本地sts上跑的又是好的,无奈换了一个tomcat8.5.61,想顺便配置下自带的manager,方便测试环境war包管理及环境部署更新,记录下碰壁过程。

       1.  配置manager context

          apache-tomcat-8.5.61/webapps/manager/META-INF/context 

         注释掉IP部分  

<Context antiResourceLocking="false" privileged="true" >
  <CookieProcessor className="org.apache.tomcat.util.http.Rfc6265CookieProcessor"
                   sameSiteCookies="strict" />
  <!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="10\.10\.d+\.\d+" />
         -->
  <Manager sessionAttributeValueClassNameFilter="java\.lang\.(?:Boolean|Integer|Long|Number|String)|org\.apache\.catalina\.filters\.CsrfPreventionFilter\$LruCache(?:\$1)?|java\.util\.(?:Linked)?HashMap"/>
</Context>

    2. 配置tomcat-user.xml

    按照官方文档推荐,单独设置manager-gui角色 并赋值

  <role rolename="tomcat"/>
  <role rolename="manager-gui"/>
  <role rolename="manager-script"/>
  <role rolename="manager-jmx"/>
  <user username="tomcat" password="password" roles="manager-gui"/>
  <user username="jmx" password="password" roles="manager-jmx"/>
  <user username="script" password="password" roles="manager-script"/>

    3. 测试manager页面功能

     到这里 manager页面已经可以顺利登陆了,停止和重载功能也可用,结果上传本地war包后,直接给跨域拦截了。。[黑人问号]

        [ip]:8080/manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=B0DB5199C5DC57C47014A0F43410C20B

     4. 尝试配置manager web.xml

       修改manager/WEB-INF/web.xml 

       按manager-gui这个角色 应该是可以访问upload页面的配置的,修改了url-pattern之后 再次重启 并没有生效 还是拦截了。。

     最后无奈把 filter-mapping 这里htmlmanager对应的csrf拦截器注册给注释掉了。 重启后 upload终于可用了!

<!--
  <filter-mapping>
    <filter-name>CSRF</filter-name>
    <servlet-name>HTMLManager</servlet-name>
  </filter-mapping>
-->
  <filter-mapping>
    <filter-name>HTTP header security filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- Define a Security Constraint on this Application -->
  <!-- NOTE:  None of these roles are present in the default users file -->
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>HTML Manager interface (for humans)</web-resource-name>
      <url-pattern>/html/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
       <role-name>manager-gui</role-name>
    </auth-constraint>
  </security-constraint>

       5. 最后

     上传还有一个文件包大小显示 默认是50MB 对应的配置位置在也在manager的web.xml 修改之后 再次重启,终于完工了

 <multipart-config>
      <!-- 50MB max -->
      <max-file-size>125829120</max-file-size>
      <max-request-size>125829120</max-request-size>
      <file-size-threshold>0</file-size-threshold>
    </multipart-config>

 总结

   tomcat的manager 配置 依赖web.xml 和context 。web.xml中定义了一些默认的跨域拦截 还没整明白。 后续再参考下官方文档。

 manager-gui

 允许访问html接口(即URL路径为/manager/html/*)

 manager-script

 允许访问纯文本接口(即URL路径为/manager/text/*)

 manager-jmx

 允许访问JMX代理接口(即URL路径为/manager/jmxproxy/*)

 manager-status
 允许访问Tomcat只读状态页面(即URL路径为/manager/status/*)

 

 

 


版权声明:本文为duncan93原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。