Nginxのログにステータスコード499のログが出たとき

リバースプロキシとしてNginxを使っているとたまに見ることがあるステータスコード499。

499というHTTP ステータスコードはRFC標準外のため、初めて見る人はぎょっとするかもしれません。

広告

先に結論:499はクライアントが切断したときに起きる

先に結論。Nginxに対してリクエストしたクライアントが応答前に切断した場合にNginxログに出力される値です。

クライアントはすでに切断しているため、499というステータスコードは実際には応答されません。
記録のために出力されるステータスコードです。

頻発しているようであれば、サーバーの応答が遅くなっている可能背がありますが、数回程度であれば全く気にする必要はないです。

ソースコードで確認

Nginxのソースコードを見ると499についてよくわかります。

src/http/ngx_http_request.hに、NGX_HTTP_CLIENT_CLOSED_REQUESTとして定義されていますね。

同ファイル上で、499について下記のように説明しています。

HTTPは、クライアントがリクエストを処理している間にコネクションを閉じた場合のコードを定義していません。 そのため、HTTPヘッダをクライアントに送ろうとする前にクライアントがコネクションを閉じてしまった場合に、そのような状況をログに記録する独自のコードを導入します。

src/http/ngx_http_request.h:129 より和訳

つまり、クライアントには499という応答が返ることはないし記録のために出力しているだけってこと。

アクセスが増えたときにこのログが頻発したら、サーバーサイドのパフォーマンスチューニングが必要になるかもね。

気になった人はソースコードで確認してね。

じゃあねー。