實作的結果就是,隻有指定的域名才能通路,除此之外全部拒絕通路,這樣做就可以保證用戶端通路自己的網站拿到自己的資源,而不是通路了别的網站拿到自己的資源
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是非法的
還是能加載出圖檔可能是因為緩存原因,刷掉就好了