Apache2 接收到带有签名的Ajp无效消息

Apache2 接收到带有签名的Ajp无效消息,apache2,tomcat7,mod-proxy,proxypass,Apache2,Tomcat7,Mod Proxy,Proxypass,我使用的是Tomcat7.0.29和Apache2.2.22ModProxy。 在httpd.conf中将Ajp配置为协议,在server.xml中将AjpNioProtocol配置为协议。 服务器启动后,日志将填充以下消息: 严重:收到签名为20599的无效消息 com.apache.coyote.ajp.ajpMessageProcessHeader 没有向web或tomcat服务器发送请求,但它仍然抛出该错误。tomcat和apache中的访问日志显示没有请求传入。 导致无效消息错误的原因

我使用的是Tomcat7.0.29和Apache2.2.22ModProxy。 在httpd.conf中将Ajp配置为协议,在server.xml中将AjpNioProtocol配置为协议。 服务器启动后,日志将填充以下消息:

严重:收到签名为20599的无效消息
com.apache.coyote.ajp.ajpMessageProcessHeader

没有向web或tomcat服务器发送请求,但它仍然抛出该错误。tomcat和apache中的访问日志显示没有请求传入。 导致无效消息错误的原因是什么

以下是配置:

  • httpd.conf

    ProxyPass /wl ajp:// ip : port /wl
    ProxyPassReverse /wl ajp:// ip : port /wl
    
  • server.xml

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

发现一个内部进程正在调用该端口并发送http请求,从而导致“无效消息…”错误。因此,我最终为这些内部进程添加了一个额外的http连接器。当缓冲区大小在两端不相同时,也可能发生这种情况:日志提到无效的AJP消息,浏览器接收
400
错误代码

我已经修复了在Apache2配置中同时启用
packetSize
ProxyIOBufferSize
的情况

在Tomcat
server.xml中:

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


在Apache2中,添加语句
ProxyIOBufferSize 65536

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

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

但当我把它改成这个:

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

错误消失了


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

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

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提醒会对最终来到这里的其他人有所帮助

没有向web或tomcat服务器发送请求,但它仍然抛出该错误。tomcat和apache中的访问日志显示没有请求传入。导致无效消息错误的原因是什么

只是给其他人一些提示,因为我在我的一个配置中意外地忘记了相同的内容:
server.xml
中提到的
连接器
正在全局侦听,因为只指定了
端口,没有任何
地址。默认情况下,后者定义为全局侦听:

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

因此,如果没有任何额外的防火墙或类似的防火墙,那么坏客户机可能只是使用各种协议测试开放端口,这些协议可能是HTTP,也可能不是HTTP,因此会产生具有不同签名的错误消息。如果没有很好的理由,就不需要让AJP在全球范围内可用,特别是在线程启动程序使用的代理设置的情况下

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


这是server.xml-->您可以提供当前配置来避免这种情况吗?要添加的内容和要从哪个文件中删除的内容默认情况下,在其他端口(如8080)上配置了HTTP连接器。因此,与其使用AJP端口,不如将调用应用程序重新配置为不使用8009和HTTP,而是使用另一个端口,例如8080。这更符合标准惯例。