【问题标题】:(111)Connection refused - Apache Reverse Proxy and Tomcat 8.5.51 - Docker Compose(111)连接被拒绝 - Apache 反向代理和 Tomcat 8.5.51 - Docker Compose
【发布时间】:2020-06-22 19:25:22
【问题描述】:

这适用于 Tomcat 8.5.50。但是,使用 Tomcat 8.5.51,Apache 无法通过 AJP 连接,并出现以下错误:

[Tue Mar 10 20:15:31.378937 2020] [proxy:error] [pid 42:tid 139841308157696] (111)Connection refused: AH00957: AJP: attempt to connect to 172.28.0.5:8009 (tomcatserver) failed
[Tue Mar 10 20:15:31.379336 2020] [proxy_ajp:error] [pid 42:tid 139841308157696] [client 192.168.0.1:58054] AH00896: failed to make connection to backend: tomcatserver

Apache 的版本为2.4.38

Server version: Apache/2.4.38 (Debian)
Server built:   2019-10-15T19:53:42

server.xml 中的 AJP 连接器具有 secretRequired="false"。一切都是通过 Docker Compose 设置的。

【问题讨论】:

    标签: apache docker tomcat docker-compose ajp


    【解决方案1】:

    secretRequired 的配置不是唯一改变的:

    来自https://tomcat.apache.org/migration-85.html#Upgrading_8.5.x

    • 从 8.5.51 开始,AJP 连接器的默认侦听地址更改为环回地址,而不是所有地址。
    • 从 8.5.51 开始,AJP 连接器的 requiredSecret 属性已被弃用,取而代之的是 secret 属性。
    • 从 8.5.51 开始,secretRequired 属性被添加到 AJP 连接器。如果设置为 true,默认值,AJP 连接器将不会 除非已指定秘密,否则开始。
    • 从 8.5.51 开始,allowedRequestAttributesPattern 属性被添加到 AJP 连接器。具有无法识别属性的请求 现在将被 403 阻止。

    参考:AJP connector

    最重要的是,股票 server.xml 甚至有 AJPConnector 注释,因此如果没有明确启用它就不会处于活动状态。

    【讨论】:

    • 谢谢。是否有适用于 Docker 部署的具有工作 addressallowedRequestAttributesPattern 设置的 AJP 连接器示例?
    【解决方案2】:

    尝试将allowedRequestAttributesPattern=".*" 添加到连接器定义中。

    【讨论】:

      【解决方案3】:

      从 Olaf 停止的地方开始,按照以下步骤操作:

      (1) 您可以省略address 属性。

      (2) 将 secretRequired 属性更改为 secretRequired="true",或者等效地,将其省略。 (默认值为 True)。

      (3) 将secret 属性添加到workers.properties 文件和server.xml 文件。你可以选择你想要的任何秘密,条件是两个文件中的值完全匹配。

      (4) 按照 T Cervenka 的建议,暂时将属性 allowedRequestAttributesPattern=".*" 添加到 AJP 连接器。

      然后你应该得到类似的东西,

      workers.properties

      worker.list=worker1
      
      worker.worker1.type=ajp13
      worker.worker1.host=localhost
      worker.worker1.port=8009
      
      worker.worker1.secret=F45A93BF-3AA7-4CB4-E49A-DB34573E4A25
      

      server.xml

      <Connector port="8009" protocol="AJP/1.3" maxThreads="500" secret="F45A93BF-3AA7-4CB4-E49A-DB34573E4A25" allowedRequestAttributesPattern=".*" />

      allowedRequestAttributesPattern 的值必须是正则表达式。它表示从反向代理传递到 AJP 连接器的请求属性。有关详细信息,请参阅 Tomcat 文档。 https://tomcat.apache.org/tomcat-8.5-doc/config/ajp.html.

      allowedRequestAttributesPattern 的正则表达式值必须与 AJP 协议中传递的请求属性完全匹配。它的默认值(你没有提到属性)是空的:这会破坏请求。如有疑问,请使用正则表达式通配符“.*”,如上。

      【讨论】:

        猜你喜欢
        • 2019-04-14
        • 2021-12-05
        • 1970-01-01
        • 2021-10-12
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 2015-12-13
        • 2016-03-08
        相关资源
        最近更新 更多