我正在使用Tomcat 7.0.29前面的Apache 2.2.22 modproxy。 配置Ajp作为httpd.conf中的协议和server.xml中的AjpNioProtocol。 服务器启动后,日志将填充以下消息:
严重:签名20599收到的邮件无效 com.apache.coyote.ajp.AjpMessage processHeader
没有请求发送到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" />
答案 0 :(得分:28)
对我来说,问题很简单。我正在发送HTTP请求,但连接器配置了AJP协议。 server.xml
中的我的连接器配置如下:
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443"/>
但是当我改变它时:
<Connector port="8009" protocol="HTTP/1.1" redirectPort="8443"/>
错误消失了。
希望这可以帮助有这个错误的人。
答案 1 :(得分:9)
当两端的缓冲区大小不同时,也可能发生这种情况:日志提及无效的AJP消息,浏览器收到400
错误代码。
我已在Apache2配置中修复了AJP connector和packetSize
上ProxyIOBufferSize
的情况。
在Tomcat中server.xml
:
<Connector protocol="AJP/1.3" port="8009"
connectionTimeout="20000"
packetSize="65536"
proxyName="yourproxy.domain.ltd" proxyPort="80"
/>
在Apache2 mod_proxy_ajp configuration中,添加语句ProxyIOBufferSize 65536
。
答案 2 :(得分:2)
发现其中一个内部进程正在调用该端口并发送导致“Invalid message ..”错误的http请求。所以我最终为这些内部进程添加了一个额外的http连接器
答案 3 :(得分: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提醒可能会对最终到此的其他人有所帮助。
答案 4 :(得分:0)
没有请求发送到Web或tomcat服务器,它仍然引发该错误。 tomcat和apache中的访问日志显示没有请求进入。什么原因导致无效消息错误?
给其他人一些提示,因为我偶然在一个配置中忘记了它:Connector
中提到的server.xml
正在全局监听,因为仅指定了port
,而没有任何address
。默认情况下,后者被定义为全局监听:
默认情况下,此端口将用于与服务器关联的所有IP地址。
https://tomcat.apache.org/tomcat-7.0-doc/config/http.html
因此,在没有任何其他防火墙的情况下,坏客户端可能只是在使用各种协议来测试开放端口,而这些协议可能是HTTP
,也可能不是<Connector address="localhost" port="port"
protocol="org.apache.coyote.ajp.AjpNioProtocol"
connectionTimeout="20000"
acceptorThreadCount="2"
maxThreads="1600"
redirectPort="8443" />
,因此会导致错误消息具有不同的签名。没有很好的理由,就不需要使AJP全局可用,尤其是在像线程启动器那样使用代理设置的情况下。
Activity