web-dev-qa-db-ja.com

nginxは空白の200応答を送信します

フェイルオーバーサーバーを構成して、すべての着信要求を受け入れ、200の空の応答で応答します。アイデアは、応答時間を最小限に抑え、40xまたは50xを送信しないようにすることです。

Nginx内の目的の場所にreturn 200;を使用してみましたが、私の監視システム(Pingdom)は応答が気に入らず、サーバーが応答しないと考えました。

もちろん、サーバーでのオーバーヘッドを最小限に抑えて、これを行うためのより良い方法はありますか?

19
Sparsh Gupta

HTTPステータスコード204 No Contentは「リクエストを完了しましたが、返すボディがありません」と言うことを意味します:

10.2.5 204コンテンツなし

サーバーは要求を満たしましたが、エンティティ本体を返す必要はなく、更新されたメタ情報を返したい場合があります。応答には、エンティティヘッダーの形式で新しいまたは更新されたメタ情報を含めることができます(MAY)。存在する場合、要求されたバリアントに関連付ける必要があります(SHOULD)。

クライアントがユーザーエージェントである場合、リクエストを送信する原因となったものからドキュメントビューを変更するべきではありません(SHOULD NOT)。この応答は主に、ユーザーエージェントのアクティブなドキュメントビューに変更を加えずにアクションの入力を可能にすることを目的としていますが、新しいまたは更新されたメタ情報は、現在ユーザーエージェントのアクティブなビューにあるドキュメントに適用する必要があります。

204応答にはメッセージ本文を含めてはならないため、常にヘッダーフィールドの後の最初の空行で終了します。

24

次のような構成ブロックにより、nginxに空のHTTP 200を返させることができます。

location = /health {
  return 200;
  #access_log off;
}

これらすべてのヘルスチェックをログに記録したくない場合は、access_log行のコメントを解除できます。

30
Cody Caughlan