モジュール ngx_http_referer_module

構成の例
ディレクティブ
     referer_hash_bucket_size
     referer_hash_max_size
     valid_referers
埋め込み変数

ngx_http_referer_module モジュールは、「Referer」ヘッダーフィールドに無効な値が入ったリクエストに対するサイトへのアクセスをブロックするために使用します。適切な「Referer」フィールド値を持ったリクエストの偽造は非常に簡単であることに留意する必要があります。そのため、このモジュールの目的は、このようなリクエストを完全にブロックすることではなく、通常のブラウザから送信された大量のリクエストのフローをブロックすることです。通常のブラウザは、有効なリクエストであっても「Referer」フィールドを送信しない場合があることも考慮する必要があります。

構成の例

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

if ($invalid_referer) {
    return 403;
}

ディレクティブ

構文 referer_hash_bucket_size サイズ;
既定値
referer_hash_bucket_size 64;
コンテキスト serverlocation

このディレクティブはバージョン 1.0.5 で登場しました。

有効なレファラーのハッシュテーブルのバケットサイズを設定します。ハッシュテーブルの設定の詳細については、別の ドキュメント に記載されています。

構文 referer_hash_max_size サイズ;
既定値
referer_hash_max_size 2048;
コンテキスト serverlocation

このディレクティブはバージョン 1.0.5 で登場しました。

有効なレファラーのハッシュテーブルの最大 サイズ を設定します。ハッシュテーブルの設定の詳細については、別の ドキュメント に記載されています。

構文 valid_referers none | blocked | server_names | 文字列 ...;
既定値
コンテキスト serverlocation

埋め込み済み $invalid_referer 変数が空の文字列に設定される「Referer」リクエストヘッダーのフィールド値を指定します。それ以外の場合は、この変数が「1」に設定されます。一致の検索では大文字と小文字は区別されません。

パラメーターは次のとおりです。

none
リクエストヘッダーに「Referer」フィールドがありません。
blocked
リクエストヘッダーに「Referer」フィールドは存在しますが、その値はファイアウォールまたはプロキシサーバーによって削除されています。このような値は、「http://」または「https://」で始まらない文字列です。
server_names
「Referer」リクエストヘッダーのフィールドには、サーバー名の 1 つが含まれています。
任意の文字列
サーバー名とオプションの URI プレフィックスを定義します。サーバー名には、先頭または末尾に「*」を含めることができます。チェック中は、「Referer」フィールド内のサーバーのポートは無視されます。
正規表現
最初の記号は「~」である必要があります。表現は、「http://」または「https://」の後に続くテキストと照合されることに注意してください。

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

埋め込み変数

$invalid_referer
「Referer」リクエストヘッダーフィールドの値が 有効 とみなされる場合は空の文字列、それ以外の場合は「1」です。