1. 程式人生 > >Nginx基礎配置之防盜鏈

Nginx基礎配置之防盜鏈

實現的結果就是,只有指定的域名才能訪問,除此之外全部拒絕訪問,這樣做就可以保證客戶端訪問自己的網站拿到自己的資源,而不是訪問了別的網站拿到自己的資源

1.準備檔案

創建出一個簡單的html檔案,找一個圖片(這裡是java小圖示)
hello.html,路徑是/usr/www/snowman/hello.html,內容是一句話加上引用圖片

<html>
<body>
<p>noly snowman be allow</p>
<img src='logo.jpg' width="100px" height="100px" />
</body>
</html>

logo.jpg,路徑是/usr/www/snowman/logo.jpg
在這裡插入圖片描述

2.配置 nginx.conf讓資源可以被獲取

在這裡插入圖片描述
注:這樣配置後輸入192.168.66.64/snowman/hello.html進行訪問,hello.html檔案通過第一個location獲取,logo.jpg通過第二個location獲取

3.用SwichHosts給IP繫結域名

在這裡插入圖片描述
這樣設定之後,無論是訪問www.snowman.cn還是www.abc.cn都是訪問的192.168.66.64就是虛擬機器
用兩個域名(域名/snowman/hello.html)訪問hello.html都可以成功獲取文字和顯示圖片

www.snowman.cn
在這裡插入圖片描述
www.abc.cn
在這裡插入圖片描述
確定能正常訪問後進行防盜鏈設定

4.增加防盜鏈設定

加入至指定location 即可實現

#防盜鏈
valid_referers none blocked www.snowman.cn;
if ($invalid_referer) {
return 403;
}

在這裡插入圖片描述
第一行程式碼的意思是允許改域名訪問,if語句的意思是不合法的域名都返回403
(記得reload哦)
這樣一來,www.snowman.cn/snowman/hello.html 依然可以成功看到文字和圖片,因為www.snowman.cn是合法的
在這裡插入圖片描述
而www.abc.cn/snowman/hello.html

只能看到文字(hello.html)但圖片載入不出來,因為訪問hello.html走的location沒有限制,訪問圖片的location中www.abc.cn是非法的
在這裡插入圖片描述

還是能加載出圖片可能是因為快取原因,刷掉就好了