Nginx
Nginx 防止盜鏈異常
我正在嘗試實現下載盜鏈保護。
我有這個程式碼
location /download/ { valid_referers blocked server_names *.example.com; if ($invalid_referer) { return 403; }
工作正常,這允許指定域並阻止valid_referers中沒有的任何內容,有什麼問題?我想實現一個指定的 IP 允許使用 not referer 並阻止它。
這就是日誌顯示的內容。
1.2.3.4 - - - “GET file.doc HTTP/2.0” 200 13050 “-” “-”
我只想要 1.2.3.4 不接受任何推薦人。
為了防止盜鏈,允許空的引用字元串(直接下載)就足夠了。因此,您的配置可能如下所示:
valid_referers none blocked server_names *.example.com;
瀏覽器在載入嵌入在網頁中的圖像時,總是將 Referer 標頭添加到圖像請求中。
如果你真的想阻止直接下載圖片,那麼你需要在
http
nginx 配置級別使用類似這樣的東西:geo $blocked { default 1; 1.2.3.4 0; }
然後在
server
塊中:location /download/ { valid_referers blocked server_names *.example.com; set $refblocked $invalid_referer$blocked; if ($refblocked = "11") { # If value of both $invalid_referer and $blocked are 1, block access. return 403; } }
在這裡,該
geo
模組用於將IP地址映射到變數值,並用於set
組合成單個變數,在語句中進行測試。$invalid_referer``$blocked``if
我自己沒有測試過這個確切的配置,但原理應該有效。