nginx如何實現圖片防盜鏈

Nginx經常使用的防盜鏈主要有如下二種方法,直接寫到nginx的配置文件裏就能夠了。 一,針對圖片目錄實行防盜鏈(修改相關域名) location /images/ { alias /data/images/; valid_referers none blocked *.dujiaoniu.com; if ($invalid_referer) { rewrite ^/  http://<font color="#ff0000">www.57cto.com</font>/daolian.gif; #return 403; } } 二,針對後綴實行防盜鏈(修改相關域名) location ~* \.(gif|jpg|jpeg|png|bmp|txt|zip|jar|swf)$ { valid_referers none blocked *.dujiaoniu.com; if ($invalid_referer) { rewrite ^/  http://<font color="#ff0000">www.57cto.com</font>/daolian.gif; #return 403; } } 須要注意的是,這二段防盜鏈的配置要放在正確的server裏,也就是要放在圖片url所在的server_name裏。其次 rewrite也要寫正確,不然可能形成重複rewrite,能夠用firefox的插件Firebug來查看。若是不想重寫到某個url, 能夠直接返回403。 另外,還能夠使用第三方模塊ngx_http_accesskey_module實現Nginx防盜鏈,這裏不做介紹,能夠百度一下。 附上有關Referer的解釋: 當一個請求頭的Referer字段中包含一些非正確的字段,這個模塊能夠禁止這個請求訪問站點。 這個頭能夠隨意的僞造,所以,使用這個模塊並不能100%的阻止這些請求,絕大多數拒絕的請求來自一些典型的瀏覽器, 能夠認爲這些典型的瀏覽器並不能提供一個」Referer」頭,甚至是那些正確的請求。 指令:valid_referers 語法:valid_referers [none|blocked|server_names] … 默認值:none 使用字段:server, location 這個指令在referer頭的基礎上爲 $invalid_referer 變量賦值,其值爲0或1。 能夠使用這個指令來實現防盜鏈功能,若是valid_referers列表中沒有Referer頭的值, $invalid_referer將被設置爲1( 參照前例)。 參數能夠使以下形式: none意爲不存在的Referer頭 blocked意爲根據防火牆假裝Referer頭,如:「Referer: XXXXXXX」。 server_names爲一個或多個服務器的列表,0.5.33版本之後能夠在名稱中使用「*」通配符。
相關文章
相關標籤/搜索