nginx的referer防盜鏈模塊,利用http請求頭中的 referer 信息進行校驗,判斷該請求是否爲合法請求,是則放行,否則可以自定義返回一個結果,可防止大部分網址引用自己的資源,但是referer是可以僞造的,僞造後可以繼續訪問資源
nginx模塊ngx_http_referer_module通常用於阻擋來源非法的域名請求,默認編譯進nginx,可以通過–without-http_referer_module禁用
先搭建Nginx靜態資源服務,放幾個圖片,然後用CSDN外鏈這個圖片,判斷搭建的靜態資源是否已經開啓了防盜鏈功能
配置文件內容如下:
server {
listen 80;
server_name zy.csxiuneng.com;
#允許跨域訪問
#add_header 'Access-Control-Allow-Origin' '*';
location / {
#開啓referers防盜鏈,只能 *.csxiuneng.com 能訪問該location下的資源
valid_referers none blocked server_names *.csxiuneng.com;
if ($invalid_referer) {
#盜鏈時返回403
return 403;
}
alias zhuyu/;
autoindex on;
}
}
invalid_referer變量值,允許訪問時值爲空,不允許訪問時值爲1
在nginx/zhuyu/img 下放了幾張圖片,因爲開啓了 autoindex on ,訪問鏈接時會以目錄的形式返回,可看到img下面有哪些文件
再訪問這張圖片,可以正常訪問
現在用CSDN寫文章,插入圖片,填寫該地址 http://zy.csxiuneng.com/img/1801.jpg,再瀏覽看是否已防止了CSDN的圖片盜鏈
[外鏈圖片轉存失敗(img-WQPNaQga-1566791119189)(http://zy.csxiuneng.com/img/1801.jpg)]
通過F12開發者工具可以看到1801.jpg以403響應的,說明防盜鏈成功
更多
#爲了加速訪問,可以對referer模塊設置共享內存,通過如下指令設置
syntax: referer_hash_bucket_size size;
default: referer_hash_bucket_size 64;
context: server,location
syntax: referer_hash_max_size size;
default: referer_hash_max_size 2048;
context: server,location