nginx 414 リクエスト URI が大きすぎます。
取得元:http://www.cnblogs.com/kaituorensheng/p/5282878.html
症状
nginx 414 Request-URI Too Large
#クライアントリクエストヘッダバッファのサイズ。リクエストヘッダの合計が128kより大きいか小さい場合に使用される。
#リクエストヘッダの合計が128kを超える場合、large_client_header_buffersによって設定されるバッファ
client_header_buffer_size 128k です。
#large_client_header_buffers ディレクティブのパラメータ 4 は数字、128k はサイズ、デフォルトは 8k です。
large_client_header_buffers 4 128k;
414 Request URI too large または 400 bad request error http URI が長すぎるか、リクエストヘッダが大きすぎる場合、このエラーが発生します。
考えられる原因
シナリオ 1. クッキーに書き込まれた値が大きすぎる。ヘッダの他のパラメータのサイズは一般に固定されており、クッキーだけがより大きなデータで書き込まれる可能性があるため。
シナリオ2.リクエストパラメータが長すぎる。例えば、post bodyを投稿し、urlencodeを使い、それをバックエンドに渡すためにgetを使うような場合。
GET http://www.264.cn/ HTTP/1.1
Host: www.264.cn
Connection: keep-alive
Cache-Control: max-age=0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.31
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
Cookie: bdshare_firstime=1363517175366;
If-Modified-Since: Mon, 13 May 2013 13:40:02 GMT
リクエストヘッダが大きすぎて large_client_header_buffer を超えた場合、nginx は "Request URI too large" (414) または "Bad-request" (400) エラーを返す場合があります。
HTTPリクエストヘッダは、上記の例のように複数行からなり、"GET http://www.264.cn/ HTTP/1.1" はリクエスト行を表します。
Request 行が large_client_header_buffer (128k) の1バッファよりも長い場合、nginx は "Request URI too large" (414) エラーを返し、上記のシナリオ 2 に相当します。
リクエストキャストの最長行もlarge_client_header_bufferより小さい必要があり、リクエスト行でない最長行がバッファ(128k)より大きい場合、"Bad-request"(400)エラーを返し、上記のシナリオ1に相当します。
ソリューション
この場合、上記の2つの値を上げることができます。
client_header_buffer_size 512k;
large_client_header_buffers 4 512k;
関連
-
[解決済み] nginxのエラー "conflicting server name "を無視する [終了しました]。
-
[解決済み] どのヘッダテストツールでもnginxが400 bad request headersを投げるのを修正する方法は?
-
[解決済み] Certbot /.well-known/acme-challenge
-
[解決済み] バックグラウンドでリクエストするようにnginxを設定する
-
Nginxエージェントのリソース: net::ERR_NAME_NOT_RESOLVED の読み込みに失敗しました。
-
nginx スタートアップ・エラー。nginx.serviceのジョブは、制御プロセスがエラーコードで終了したため失敗しました。
-
linux システムでの Nginx のインストール: make: *** `install' をターゲットとするルールがありません。停止します。
-
OSError: [Errno 98] アドレスはすでに使用中です。
-
Nginx] エラー413 Request Entity Too Largeの解決方法
-
アップストリームエラーの読み込み中に、アップストリームが接続を早々に切断した
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Raspberry Piサーバーに対して小規模なDDoS攻撃を実行する【終了しました
-
[解決済み】Docker Nginxが停止しました。[emerg] 1#1: ホストがアップストリームで見つかりません。
-
[解決済み] nginxリクエストで許容されるurlの長さを設定する方法 (エラーコード: 414, uri too large)
-
[解決済み] Nginx 無効なPID番号
-
[解決済み] NGINXを設定して、サブルートで場所(同じサーバー名の下)に応じて異なるシングルページアプリケーション(SPA...すなわち静的ファイル)をデプロイする方法
-
ブラウザエラー net::ERR_CONTENT_LENGTH_MISMATCH 200 (OK) 解決策
-
Gitはいくつかのバグフィックスを行いました。マージされていないファイルがあるため、Pullができない。
-
NginxのRequest Entity Too Largeの解決法
-
nginxの問題解決:上流からの応答ヘッダーの読み込み中に上流が接続を早々に切断した