在Nginx中配置防盜鏈主要是通過檢查HTTP請求頭中的Referer字段來實現的。如果請求的來源不是你指定的域名,那么可以拒絕訪問資源。以下是一個基本的防盜鏈配置示例:
打開你的Nginx配置文件。通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/yourdomain.com。
在server塊中添加以下配置:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
valid_referers none blocked yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
}
}
這里的配置解釋如下:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$:匹配所有以.jpg, .jpeg, .png, .gif, .ico, .css, .js結尾的文件請求。valid_referers none blocked yourdomain.com *.yourdomain.com;:設置允許的引用來源。none表示不允許任何引用,blocked表示允許被Nginx阻止的引用(例如,來自廣告聯盟的引用),yourdomain.com和*.yourdomain.com表示允許你的域名及其子域名的引用。if ($invalid_referer) { return 403; }:如果引用無效,則返回403 Forbidden狀態碼。保存配置文件并退出編輯器。
重新加載Nginx配置以使更改生效:
sudo nginx -t # 檢查配置文件語法是否正確
sudo nginx -s reload # 重新加載配置文件
現在,Nginx將根據配置檢查防盜鏈規則。如果請求的資源引用不符合指定的域名,用戶將收到403 Forbidden響應。
請注意,防盜鏈并不能完全防止資源被盜用,因為Referer頭可以被偽造。更高級的防盜鏈方法可能需要使用簽名URL或其他驗證機制。