如果服務器的圖片被別的網站盜鏈,將影響服務器的帶寬以及訪問速度,這時我們就需要設置圖片文件或視頻文件的防盜鏈功能;
防盜鏈功能,簡單來說就是你可以直接訪問該資源,但是不能將我的資源鏈接放到你自己的服務器上讓別人訪問,尤其是圖片或視頻這種比較大的文件,容易導致服務器響應很慢。
如果不是圖床,還真怕別的網站直接使用本站圖片。這樣子流量很可能一下子就被刷光了,畢竟cdn都是白花花的銀子買來的。 因此,還是設置一個防盜鏈吧,nginx就可以完成這個功能了。
一般來說,遵照http協議實現的瀏覽器,在從a網站訪問b網站時,都會帶上當前網站的url,以表明此次點擊是從何而起的。因此, nginx的這個模塊也是依靠這個來實現,所以,如果駭客不加此頭部,還是沒法愉快的防盜圖。
nginx官網文檔如下:
syntax: valid_referers none | blocked | server_names | String …;
default:??? —
context:??? server, location
nginx referer指令簡介
nginx模塊ngx_http_referer_module通常用于阻擋來源非法的域名請求.我們應該牢記,偽裝referer頭部是非常簡單的事情,所以這個模塊只能用于阻止大部分非法請求.我們應該記住,有些合法的請求是不會帶referer來源頭部的,所以有時候不要拒絕來源頭部(referer)為空的請求.
因此,我們可以在 server 或者 location 塊加上代碼,我是保存為 valid_referers.conf :
valid_referers?none?blocked?server_names; if?($invalid_referer)?{ ?return?403; }
然后在對應需要的地方加上 include /etc/nginx/valid_referers.conf ,當然,執行這個的前提是已經把 valid_referers.conf 放到對應機器上的 /etc/nginx/valid_referers.conf 路徑下。
示例:
?location?/articles/img?{ ??include?/etc/nginx/valid_referers.conf; ??root?/data/blog/code; ?}