25

我正在使用带有 Apache 2.2.22 modproxy 的 Tomcat 7.0.29。在 httpd.conf 中将 Ajp 配置为协议,在 server.xml 中配置 AjpNioProtocol。服务器启动后,日志中充满以下消息:

严重:收到无效消息,签名
为 20599 com.apache.coyote.ajp.AjpMessage processHeader

没有请求发送到 web 或 tomcat 服务器,它仍然会抛出该错误。tomcat和apache的访问日志显示没有请求进来。是什么导致了invalid message错误?

这是配置:

  • httpd.conf

    ProxyPass /wl ajp:// ip : port /wl
    ProxyPassReverse /wl ajp:// ip : port /wl
    
  • 服务器.xml

    <Connector port="port" 
               protocol="org.apache.coyote.ajp.AjpNioProtocol" 
               connectionTimeout="20000" 
               acceptorThreadCount="2" 
               maxThreads="1600" 
               redirectPort="8443" />
    
4

5 回答 5

34

对我来说,问题很简单。我正在发送 HTTP 请求,但连接器配置了 AJP 协议。我的连接器server.xml配置如下:

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>

但是当我把它改成这样时:

<Connector port="8009" protocol="HTTP/1.1" redirectPort="8443"/>

错误消失了。

希望这将有助于解决此错误的人。

于 2015-02-27T21:27:47.447 回答
10

当两端的缓冲区大小不同时,也可能发生这种情况:日志提到无效的 AJP 消息并且浏览器收到400错误代码。

我已经修复了packetSizeAJP连接器ProxyIOBufferSizeApache2 配置中的情况。

在 Tomcat 中server.xml

<Connector protocol="AJP/1.3" port="8009"
   connectionTimeout="20000"
   packetSize="65536"
   proxyName="yourproxy.domain.ltd" proxyPort="80"
   />

在 Apache2 mod_proxy_ajp 配置中,添加语句ProxyIOBufferSize 65536

于 2013-05-30T14:23:45.973 回答
2

发现其中一个内部进程正在调用该端口并发送 http 请求导致“无效消息..”错误。所以我最终为这些内部流程添加了一个额外的 http 连接器

于 2012-08-07T19:49:38.563 回答
1

没有请求发送到 web 或 tomcat 服务器,它仍然会抛出该错误。tomcat和apache的访问日志显示没有请求进来。是什么导致了invalid message错误?

只是对其他人的一些提示,因为我偶然在我的一个配置中忘记了相同的内容:提到Connectorserver.xml内容是全局监听,因为仅port指定了,没有任何address. 后者默认定义为全局监听:

默认情况下,此端口将用于与服务器关联的所有 IP 地址。

https://tomcat.apache.org/tomcat-7.0-doc/config/http.html

因此,如果没有任何额外的防火墙或类似的东西,不良客户端可能只是使用各种协议测试开放端口,这可能是也可能不是HTTP,因此会导致具有不同签名的错误消息。如果没有很好的理由,就不需要让 AJP 全局可用,尤其是在线程启动器使用的代理设置的情况下。

<Connector  address="localhost" port="port" 
            protocol="org.apache.coyote.ajp.AjpNioProtocol" 
            connectionTimeout="20000" 
            acceptorThreadCount="2" 
            maxThreads="1600" 
            redirectPort="8443" />
于 2019-01-08T11:36:14.177 回答
0

我今天收到了类似的消息:

Nov 18, 2016 4:25:00 PM org.apache.coyote.ajp.AjpMessage processHeader
SEVERE: Invalid message received with signature 65524

我的问题的根本原因是 selinux 没有让 apache 连接到 tomcat。我对这个错误是如何导致的有点困惑——我希望不会有任何联系,期间。最好的猜测,我可能尝试使用 telnet 手动连接到该端口。这样做肯定会发出类似的信息。

无论如何,也许这个 selinux 提醒会对最终来到这里的其他人有所帮助。

于 2016-11-18T21:41:56.853 回答