在 Debian 系统上使用 Nginx 实现防盗链,可以通过配置 Nginx 的 ngx_http_referer_module
模块来完成。以下是详细的步骤:
sudo apt update
sudo apt install nginx
打开 Nginx 的主配置文件,通常位于 /etc/nginx/nginx.conf
或 /etc/nginx/sites-available/default
。
sudo nano /etc/nginx/sites-available/default
在 server
块中添加以下内容,以保护特定资源(如图片、视频等):
server {
listen 80;
server_name yourdomain.com;
location ~* \.(jpg|jpeg|png|gif|mp4)$ {
valid_referers none blocked yourdomain.com *.yourdomain.com;
if ($invalid_referer) {
return 403;
# 或者可以重定向到一张警告图片
# rewrite ^ /anti-hotlinking.jpg;
}
}
# 其他配置...
root /var/www/html;
index index.html index.htm;
}
valid_referers
指令用于指定允许的引用来源。
none
:允许没有 Referer 的请求(如直接输入 URL 的访问)。blocked
:允许非标准 Referer(如防火墙过滤后的请求)。yourdomain.com
和 *.yourdomain.com
:允许来自指定域名及其子域名的请求。if ($invalid_referer)
:如果请求的来源不符合 valid_referers
的规则,则变量 $invalid_referer
为 true。return 403;
:返回 HTTP 状态码 403(禁止访问)。在保存配置文件后,测试配置是否正确:
sudo nginx -t
预期输出:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
如果有错误,检查配置文件中的语法问题并修复。
使配置生效:
sudo systemctl reload nginx
现在,你可以尝试访问你的网站,并使用不同的引用页来验证防盗链是否生效。例如,如果你从一个不允许的域名访问,你应该会看到 403 Forbidden 错误。