防盜鏈是一種保護網站資源的方法,可以防止其他網站直接引用你的資源。通過使用rewrite規則,我們可以實現防盜鏈功能。以下是一個示例配置,展示了如何在Nginx中使用rewrite實現防盜鏈:
打開Nginx配置文件,通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
。
在server
塊中,添加以下配置:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
valid_referers none blocked yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
rewrite ^/ http://example.com/forbidden.html redirect;
}
}
這里的配置表示,對于以.gif
、.jpg
、.jpeg
、.png
、.bmp
和.swf
結尾的請求,我們將檢查請求頭中的Referer
字段。valid_referers
指令定義了允許的來源,包括none
(直接輸入URL訪問)、blocked
(空的Referer)、yourdomain.com
和所有以.yourdomain.com
為后綴的域名。
如果Referer
不在允許的列表中($invalid_referer
為真),則使用rewrite
指令將請求重定向到一個名為forbidden.html
的自定義頁面。你可以根據需要修改這個頁面的URL。
保存配置文件并重啟Nginx服務。在Debian/Ubuntu系統上,可以使用以下命令:
sudo service nginx restart
在CentOS/RHEL系統上,可以使用以下命令:
sudo systemctl restart nginx
現在,當其他網站試圖直接引用你的圖片、視頻等資源時,將會被重定向到一個自定義的禁止訪問頁面。