2011-05-03 620 views
3

我如何知道nginx變量$ http_referer未設置或爲空?

我收到一些沒有http referer的請求。在nginx日誌中,$ http_referer顯示如下:「 - 」。我想要做的是「迴歸403」。如果$ http_referer沒有被設置或爲空,就像在這種情況下一樣。

謝謝!

+0

我嘗試使用正則表達式,但似乎並不奏效 - 或403我中搜索的結果會告訴我,如果一個nginx的變量設置與否的方法拒絕一切....但我沒有找到它呢。 – Clawsy 2011-05-03 09:26:11

+0

如果我的瀏覽器被配置爲永遠不會發送任何網站的引用標題,該怎麼辦? – 2011-05-03 09:26:20

+0

嗯......我真正需要的是拒絕每個訪問資源的請求的資源,例如簡單的GET,他們沒有'任何人'發送它們...例如http_referer ... – Clawsy 2011-05-03 09:28:58

回答

5

http://nginx.org/en/docs/http/ngx_http_referer_module.html#valid_referers

valid_referers server_names ~.; 
if ($invalid_referer) { 
    return 403; 
} 
+0

謝謝..但我遇到了一個錯誤:'[emerg]:在「valid_referers」指令中沒有任何有效的引用者''指定'none'或'blocked'引用者' – Clawsy 2011-05-03 09:39:25

+1

感謝您的回答! – Clawsy 2011-05-03 10:00:09

+0

@Clawsy固定版本用空引用程序阻止每個請求。任何非空引用者都認爲是正確的。 – 2011-05-03 10:02:09

0

這個怎麼樣?

if ($http_referer ~ /^$/) { 
    return 403; 
}