nginx利用referer指令实现防盗链配置
nginx模塊ngx_http_referer_module通常用于阻擋來源非法的域名請求,我們應該牢記。下面這篇文章主要介紹了nginx利用referer指令實現防盜鏈配置的相關資料,需要的朋友可以參考借鑒,下面來一起看看吧。
實現圖片防盜鏈:
location ~* .(gif|jpg|png|webp)$ { valid_referers none blocked domain.com *.domain.com server_names ~.google. ~.baidu.; if (KaTeX parse error: Expected '}', got '#' at position 32: … { return 403; #?rewrite ^/ /201…invalid_referer等于1,在if語句中返回一個403給用戶,這樣用戶便會看到一個403的頁面,如果使用下面的rewrite,那么盜鏈的圖片都會顯示403.jpg。none規則實現了允許空referer訪問,即當直接在瀏覽器打開圖片,referer為空時,圖片仍能正常顯示.
[root@loya ~]# curl -I /2018img/2018/09/25181009.jpg -H 'Referer:http://www.baidu.com’HTTP/1.1 200 OKServer: nginx/1.8.1Date: Fri, 16 Dec 2016 14:56:51 GMTContent-Type: image/jpegContent-Length: 17746Last-Modified: Tue, 16 Aug 2016 03:20:21 GMTConnection: keep-aliveETag: "57b28675-4552"Accept-Ranges: bytes[root@loya ~]# curl -I /2018img/2018/09/25181009.jpg -H 'Referer:http://www.qq.com’HTTP/1.1 403 ForbiddenServer: nginx/1.8.1Date: Fri, 16 Dec 2016 14:56:58 GMTContent-Type: text/html; charset=utf-8Content-Length: 168Connection: keep-alive
指令
語法: valid_referers none | blocked | server_names | string …;
配置段: server, location
指定合法的來源’referer’, 他決定了內置變量$invalid_referer的值,如果referer頭部包含在這個合法網址里面,這個變量被設置為0,否則設置為1. 需要注意的是:這里并不區分大小寫的.生辰八字起名字
參數說明:
none “Referer” 為空 blocked “Referer”不為空,但是里面的值被代理或者防火墻刪除了,這些值都不以http://或者https://開頭,而是“Referer: XXXXXXX”這種形式 server_names “Referer”來源頭部包含當前的server_names(當前域名) arbitrary string 任意字符串,定義服務器名或者可選的URI前綴.主機名可以使用*開頭或者結尾,在檢測來源頭部這個過程中,來源域名中的主機端口將會被忽略掉 regular expression 正則表達式,~表示排除https://或http://開頭的字符串.
注意
通過Referer實現防盜鏈比較基礎,僅可以簡單實現方式資源被盜用。構造Referer的請求很容易實現。
總結
以上是生活随笔為你收集整理的nginx利用referer指令实现防盗链配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS 5.4下的Memcache
- 下一篇: UBUNTU手动安装JDK的详细步骤