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


19

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

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

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

回答:


23

HTTPステータスコード204 No Contentは、「リクエストを完了しましたが、返す本文がありません」という意味です。

10.2.5 204コンテンツなし

サーバーは要求を実行しましたが、エンティティ本体を返す必要はなく、更新されたメタ情報を返したい場合があります。応答には、エンティティヘッダーの形式で新しいメタデータまたは更新されたメタ情報が含まれている場合があります。

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

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


こんにちは、アレックス。メモをありがとう。最近、すべての主要なブラウザで204応答コードが認識されるかどうか疑問に思っています。つまり、サーバーが204の送信を開始した場合、一部の訪問者(ブラウザー、モバイル、端末間)でエラーが発生する可能性はありますか?
スパーシュグプタ

1
@SparshGupta私はブラウザの互換性の専門家ではありません、ごめんなさい。いくつかのブラウザ(FF 7とMac OSXのSafari)で簡単に確認しましたが、まったく何もしません。たとえば、ページがすでに開いている場合、204を返すURLをアドレスバーに入力してEnterキーを押すと、両方のブラウザーに前のページが表示されます。
アレクサンダーアザロフ

29

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

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

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


6
場所の後の「=」記号が重要であることに注意してください。それがなければ、そのファイルがそうでなければnginxのそれと200を返さない、存在しなければならない、あなただけのファイルとnginxの心配は喜んで200を返します。あなたが望む任意の場所を作ることができず
フローリンアンドレイ

認証されたリクエストが200を返し、認証されていない401を返すなど、基本認証とそれを組み合わせる方法は?
キリル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.