多くのIf-None-Match値が原因で、リクエストヘッダーフィールドのサイズがサーバーの制限を超えています


8

クライアントが「400 Bad Request」エラーを受け取り、Apache / 2.2.22を使用してUbuntu 12.04.3 LTSでホストされているdrupalホームページを表示できないように見える興味深いケースを次に示します。

不正なリクエスト
ブラウザがこのサーバーが理解できないリクエストを送信しました。
リクエストヘッダーフィールドのサイズがサーバーの制限を超えています。

パケットスニッフィング出力:

...
T 2013/09/02 15:23:10.458167 ###.###.###.###:40027 -> ###.###.###.###:80 [A]
GET / HTTP/1.0.
If-None-Match: "1363160742-0", "1363165573-1", "1363175854-1", "1363175854-0", "1363179616-0", "1363181811-0", "1363239319-1", "1363255903-0", "1363259282-0", "1363263398-1", "1363274564-0", "1363329642-0", "1363332613-1", "1363333851-0", "1363599826-0", "1363678909-0", "1363684227-1", "1363699732-0", "1363755181-0", "1363765691-1", "1363767178-0", "1363780208-0", "1363787589-0", "1363795259-1", "1363852409-1", "1363863225-1", "1363928115-0", "1363951793-0", "1363951793-1", "1364133610-1", "1364187608-1", "1364187608-0", "1364203083-0", "1364208174-0", "1364214930-0", "1364219815-0", "1364274441-1", "1364280930-0", "1364280930-1", "1364286055-1", "1364298840-0", "1364298840-1", "1364360674-0", "1364364356-1", "1364381508-0", "1364385520-1", "1364460734-0", "1364882595-1", "1364903271-0", "1364967946-0", "1364967946-1", "1364981713-0", "1364985142-1", "1364992835-1", "1365061578-0", "1365065290-1", "1365076128-0", "1365141088-1", "1365167701-0", "1365171024-0", "1365402404-1", "1365402404-0", "1365411731-1", "1365416882-0", "1365476715-0", "1365487578-0", "1365488880-1", "1365503922-1", "1365514224-1", "1365579101-0", "1365580320-0", "1365582817-0", "1365584926-0", "1365589524-0", "1365608307-0", "1365649987-0", "1365682295-0", "1365685083-0", "1365770532-1", "1365770532-0", "1365844566-0", "1365996619-1", "1366093719-1", "1366093719-0", "1366115408-0", "1366180275-1", "1366186431-0", "1366196476-0", "13662669
...

この段階では、特定のクライアントに限定されているかどうかは完全にはわかりませんが、エラーは次のユーザーエージェント文字列を持つユーザーによって報告されました。

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_5) AppleWebKit/534.57.7 (KHTML, like Gecko) Version/5.1.7 Safari/534.57.7

さて、問題は何をすべきかのままです、それはサーバーの問題ですか、それとも単に誤動作しているクライアントですか?


これはUbuntuの質問ではありません。Apacheのログを確認し、それを使用して専門コミュニティの間で助けを調達してください。
ルイス・デ・スーザ

私の考えでは、それはUbuntuのデフォルトの問題かもしれません。
inetpro

1
私たちはUbuntuで実行されているウェブサーバーについて話しているので、それは話題外のものではありません。@LuísdeSousaが示唆したように/var/log/apache2/error.log、を見て、どの制限に違反しているかを確認してください。
guntbert 2013

@LuísdeSousaここではUbuntuサーバーのすべての部分をサポートしています。なぜこれがUbuntuの質問ではないのですか?
Eliah Kagan 2013

@guntbert興味深い部分は、リクエストも実際のエラーもapacheログに記録されないことです。squidリバースプロキシにログインしており、プロキシが実際に原因であると推測しています
inetpro

回答:


11

問題が見つかりました。一部のユーザーエージェントと一部のリクエストは、Webサーバーのデフォルトに対して大きすぎます。馬鹿げた問題にぶつかるように見えますが、それは私に起こり続けていnginxます。通常、愚かなCookie名とアップロードが行われている場合...とにかく...

解決策は、リクエストの制限を引き上げることです。ディレクティブを使用してLimitRequestFieldSizeこれをグローバルに行うことも、サイトに対してのみ行うこともできます。

LimitRequestFieldSize 32768

これは32KB(デフォルトの8KBから)の制限です。


それが私が考えていたものですが、推奨サイズがわかりませんでした。ありがとう!
inetpro 2013

1
に増やしLimitRequestFieldSize32768も役に立たなかった。
inetpro 2013

@inetpro Apacheを再起動しましたか?そして、それは十分に高いコンテキストにありますか?これは.htaccessファイルでは機能しません。
オリ

1
定義した名前ベースの仮想ホストまたは別の仮想ホストにエントリを配置しましたか?ドキュメントは言う:「名前ベースのバーチャルホストを使用する場合は、このディレクティブの値は、デフォルト(最初にリストされている)から取られNameVirtualHostでの仮想ホストの接続がマップされました。」。グローバル設定でこれを行う方が良いようです。仮想ホストでそれを行う際の問題は、要求ヘッダー自体に必要な仮想ホストの名前が含まれていることです。
Robie Basak 2013

2
LimitRequestFieldSize 65536LimitRequestLine 65536LimitXMLRequestBody 0⓸??? ⓹ℙℛṎℱỈᎢ☕
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.