什麼是圖片盜鏈
- 每張圖片在瀏覽器中都有對應的圖片地址,在瀏覽器中輸入這個地址是能夠直接拿到圖片。
- 圖片盜鏈,就是盜用者在他的站上須要顯示咱們的圖片,他沒有把圖片拿下來,放到他的服務器上,
- 而是直接就用咱們的,圖片地址,來請求到咱們的服務器來拿圖片,流量產生在咱們這邊。
referer
referer指令經過檢測訪問圖片的來源,來作出一些控制。
圖片訪問的來源
- 經過谷歌/百度訪問
- 經過瀏覽器直接訪問
- 本站點的訪問
- 來自非法的域名訪問
referer
- nginx 模塊 ngx_http_referer_module 一般用於阻擋來源非法的域名請求.
- 但咱們應該牢記,假裝 Referer 頭部是很是簡單的事情,因此這個模塊只能用於阻止大部分非法請求.
- 咱們應該記住,有些合法的請求是不會帶 referer 來源頭部的,因此有時候不要拒絕來源頭部(referer)爲空的請求
圖片防盜鏈配置
location ~* \.(gif|jpg|png|bmp)$ {
valid_referers none blocked *.ttlsa.com server_names ~\.google\. ~\.baidu\.;
if ($invalid_referer) {
return 403;
}
}
- 以上全部來至 ttlsa.com 和域名中包含 google 和 baidu 的站點均可以訪問到當前站點的圖片,
- 若是來源域名不在這個列表中,那麼$invalid_referer 等於 1,在 if 語句中返回一個 403 給用戶,
- 這樣用戶便會看到一個 403 的頁面,若是使用下面的 rewrite,那麼盜鏈的圖片都會顯示 403.jpg。
- 若是用戶直接在瀏覽器輸入你的圖片地址,那麼圖片顯示正常,由於它符合 none 這個規則.
參數說明
- none
- blocked
- 「Referer」來源頭部不爲空,可是裏面的值被代理或者防火牆刪除了,這些值都不以 http://或者 https://開頭.
- server_names
- 「Referer」來源頭部包含當前的 server_names(當前域名)
- regular expression
- 正則表達式,~表示排除 https://或 http://開頭的字符串