翻譯內容可能已經過舊。你可以通過 英文版本查看最近的更新。
配置實例 指令 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 |
默認值: | — |
上下文: | server , location |
“Referer”請求頭爲指定值時,內嵌變量$invalid_referer
被設置爲空字符串,否則這個變量會被置成“1
”。查找匹配時不區分大小寫。
該指令的參數可以爲下面的內容:
none
- 缺少“Referer”請求頭;
blocked
- “Referer” 請求頭存在,但是它的值被防火牆或者代理服務器刪除;這些值都不以“
http://
” 或者 “https://
”字符串作爲開頭; server_names
- “Referer” 請求頭包含某個虛擬主機名;
- 任意字符串
- 定義一個服務器名和可選的URI前綴。服務器名允許在開頭或結尾使用“
*
”符號。當nginx檢查時,“Referer”請求頭裏的服務器端口將被忽略。 - 正則表達式
- 必須以“
~
”符號作爲開頭。需要注意的是表達式會從“http://
”或者“https://
”之後的文本開始匹配。
實例:
轉自:http://nginx.org/cn/docs/http/ngx_http_referer_module.html#examplevalid_referers none blocked server_names *.example.com example.* www.example.org/galleries/ ~\.google\.;