盜鏈是指一個網站的資源(圖片資源、視頻資源、文件等)未經許被其它網站提供瀏覽和下載。
盜鏈行為會對服務器資源以及帶寬消耗非常大,但實際網站的訪問量卻并沒有得到提升。所以網站必須要有有效的防盜鏈措施。
本文通過Nginx的配置指令valid_referers來實現簡單的圖片和其它類型文件的防盜鏈。
博主未測試,請自行檢驗
添加位置:

location ~ .(jpg|png|gif)$ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
用 “ | ” 來分隔你想保護的文件的擴展名。
valid_referers指令允許你定義一個網站列表,當不在列表中的網站訪問時,返回403錯誤。
none參數表示匹配沒有Referer的HTTP請求。
blocked參數表示請求有Referer,但是被防火墻或者代理服務器修改,去掉了https://或http://。
后面跟網站列表,支持頂級域名和二級域名以及通配符。
除了使用location對文件訪問進行限制,也可以對指定目錄進行限制。
下面的配置會對images目錄下所有文件進行防盜鏈處理:
location /images/ {
valid_referers none blocked mysite.com *.mysite.com;
if ($invalid_referer) {
return 403;
}
}
這些配置都是簡單的防盜鏈方法。可有效地屏蔽一些直接引用網站鏈接的盜鏈方式;如果盜鏈網站偽造了HTTP請求,這種方法不能有效地屏蔽。
反盜鏈的一些其它措施
比較原始的方法是定期更換目錄名或者文件名。這種方法可使用腳本程序來自動化處理。比較高級的方法是進行Cookie或者Session加密驗證,添加驗證碼等。