動かざることバグの如し

近づきたいよ 君の理想に

nginxに長いURLをリクエストすると414 Request-URI Too Largeエラー

症状

nginxに長いGETパラメーター(1000文字以上)を含むURLをGETで渡すと以下のようなエラーになる。

414 Request-URI too large

原因はもちろんGETパラメーターが長すぎるのだが、仕様上POSTに変更できない場合、nginxの設定を書き換えるしかない

対処方法

結論としてはnginxの設定で client_header_buffer_sizelarge_client_header_buffers の値を増やせば良い。

以下のような感じで2行をnginxの設定に追加

client_header_buffer_size 64k;
large_client_header_buffers 4 64k;
server {
    listen 80;
    (略)
    client_header_buffer_size 64k;
    large_client_header_buffers 4 64k;

    location / {
         (略)
    }
}

service nginx reload