1. 程式人生 > >Nginx實現圖片防盜鏈(referer指令)

Nginx實現圖片防盜鏈(referer指令)

ret 而是 mod reg 當前 部分 什麽是 表達 百度

什麽是圖片盜鏈
  • 每張圖片在瀏覽器中都有對應的圖片地址,在瀏覽器中輸入這個地址是可以直接拿到圖片。
  • 圖片盜鏈,就是盜用者在他的站上需要顯示我們的圖片,他沒有把圖片拿下來,放到他的服務器上,
  • 而是直接就用我們的,圖片地址,來請求到我們的服務器來拿圖片,流量產生在我們這邊。
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; #rewrite ^/ http://www.ttlsa.com/403.jpg; } }
  • 以上所有來至 ttlsa.com 和域名中包含 google 和 baidu 的站點都可以訪問到當前站點的圖片,
  • 如果來源域名不在這個列表中,那麽$invalid_referer 等於 1,在 if 語句中返回一個 403 給用戶,
  • 這樣用戶便會看到一個 403 的頁面,如果使用下面的 rewrite,那麽盜鏈的圖片都會顯示 403.jpg。
  • 如果用戶直接在瀏覽器輸入你的圖片地址,那麽圖片顯示正常,因為它符合 none 這個規則.
參數說明
  • none
    • “Referer” 來源頭部為空的情況
  • blocked
    • “Referer”來源頭部不為空,但是裏面的值被代理或者防火墻刪除了,這些值都不以 http://或者 https://開頭.
  • server_names
    • “Referer”來源頭部包含當前的 server_names(當前域名)
  • regular expression
    • 正則表達式,~表示排除 https://或 http://開頭的字符串

Nginx實現圖片防盜鏈(referer指令)