防盗链(Referer)是防止其他网站直接链接你的资源(如图片、视频等)的有效方法。以下是Nginx防盗链的详细配置方法:
location ~* \.(jpg|jpeg|png|gif|mp4|flv|swf|zip|rar)$ {
valid_referers none blocked server_names *.example.com example.com;
if ($invalid_referer) {
return 403;
# 或者可以重定向到一张警告图片
# rewrite ^ /static/images/anti-hotlinking.jpg;
}
}
~* \.(jpg|jpeg|png|gif|mp4|flv|swf|zip|rar)$
- 匹配这些扩展名的文件valid_referers
- 定义合法的引用来源:
none
- 允许没有Referer的请求(直接访问)blocked
- 允许Referer被防火墙或代理删除的请求server_names
- 允许本服务器名的请求*.example.com example.com
- 允许这些域名的请求$invalid_referer
- 当Referer不合法时变量为1
valid_referers none blocked server_names
*.example.com example.com
~\.google\. ~\.bing\. ~\.yahoo\. ~\.baidu\.;
if ($invalid_referer) {
return 403;
# 或者
# rewrite ^ /403.html;
}
valid_referers ~\.(google|bing|yahoo|baidu)\. ~\.(sogou|soso|youdao)\.;
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
valid_referers none blocked server_names *.example.com;
if ($invalid_referer) {
return 403;
}
expires 30d;
add_header Cache-Control "public";
}
对于更安全的防盗链,可以考虑: - 使用签名URL(适合视频等大文件) - 使用token验证 - 使用Nginx的secure_link模块
希望这些配置能帮助你有效防止资源被盗链。根据你的实际需求调整配置参数。