模組 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;
上下文 server, location

此指令出現在 1.0.5 版本中。

設定有效 referer 雜湊表的儲存桶大小。設定雜湊表的詳細資訊在單獨的文件中提供。

語法 referer_hash_max_size 大小;
預設
referer_hash_max_size 2048;
上下文 server, location

此指令出現在 1.0.5 版本中。

設定有效 referer 雜湊表的最大 大小。設定雜湊表的詳細資訊在單獨的文件中提供。

語法 valid_referers none | blocked | server_names | 字串 ...;
預設
上下文 server, location

指定 “Referer” 請求標頭欄位的值,這些值會使嵌入的 $invalid_referer 變數設定為空字串。否則,變數將設定為 “1”。搜尋匹配項不區分大小寫。

參數可以是下列值:

none
請求標頭中缺少 “Referer” 欄位;
blocked
請求標頭中存在 “Referer” 欄位,但其值已被防火牆或 Proxy 伺服器刪除;此類值是不以 “http://” 或 “https://” 開頭的字串;
server_names
“Referer” 請求標頭欄位包含其中一個伺服器名稱;
任意字串
定義伺服器名稱和選用的 URI 字首。伺服器名稱的開頭或結尾可以有 “*”。檢查期間,“Referer” 欄位中的伺服器連接埠會被忽略;
正規表示式
第一個符號應為 “~”。應該注意,表示式將與 “http://” 或 “https://” 之後開始的文字進行比對。

範例

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

嵌入變數

$invalid_referer
如果 “Referer” 請求標頭欄位值被視為有效,則為空字串,否則為 “1”。