web-dev-qa-db-ja.com

署名付きのAjp無効メッセージを受信しました

Apache 2.2.22 modproxyを前面に並べたTomcat 7.0.29を使用しています。 httpd.confのプロトコルとしてAjpを、server.xmlのAjpNioProtocolとしてAjpを構成しました。サーバーの起動後、ログには次のメッセージが書き込まれます。

重大:署名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" />
    
21
Yasser

私にとって、問題は簡単でした。 HTTP要求を送信していましたが、コネクターはAJPプロトコルで構成されていました。 server.xmlのコネクタは次のように構成されました。

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

しかし、これを次のように変更したとき:

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

エラーはなくなりました。

うまくいけば、このエラーで誰かを助けるでしょう。

29
smntx

これは、バッファサイズが両端で同じでない場合にも発生する可能性があります。ログには無効なAJPメッセージが記述され、ブラウザは400 エラーコード。

AJPコネクタpacketSizeとApache2構成の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

9
Yves Martin

内部プロセスの1つがそのポートを呼び出し、httpリクエストを送信して「Invalid message ..」エラーを引き起こしていることがわかりました。そのため、これらの内部プロセス用に追加のhttpコネクタを追加することになりました

2
Yasser

WebサーバーまたはTomcatサーバーに送信されるリクエストはなく、それでもそのエラーがスローされます。 TomcatおよびApacheのアクセスログに、リクエストが着信していないことが示されています。無効なメッセージエラーの原因は何ですか?

偶然に私の設定の1つで同じことを忘れたので、他の人々のためのちょっとしたヒント:言及されたConnector in server.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" />
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のリマインダーは、ここにたどり着く他の誰かに役立つでしょう。

0
Dan Pritts