通过 Nginx 的 Referer 检查可以有效防止其他网站盗用你的图片资源。以下是详细的配置方法:
在 Nginx 配置文件中添加以下内容:
location ~* \.(jpg|jpeg|png|gif|webp)$ {
valid_referers none blocked server_names
*.yourdomain.com
~\.google\. ~\.bing\. ~\.yahoo\.
~\.baidu\. ~\.yandex\.
~\.facebook\. ~\.twitter\.;
if ($invalid_referer) {
return 403;
# 或者可以返回一张警告图片
# rewrite ^ /path/to/anti-hotlinking.jpg;
}
}
文件类型匹配:~* \.(jpg|jpeg|png|gif|webp)$
匹配常见的图片格式
valid_referers 指令:定义合法的 Referer 来源
none
:允许直接访问(无 Referer)blocked
:允许 Referer 被防火墙或代理删除的请求server_names
:允许本服务器名作为 Referer*.yourdomain.com
非法访问处理:
valid_referers none blocked ...;
valid_referers none blocked ...;
if ($http_referer ~* "^https?://([^.]+\.)?yourdomain\.com") {
set $allow_access 1;
}
if ($http_user_agent ~* "(Googlebot|Bingbot|Yahoo|Slurp|DuckDuckBot|Baiduspider)") {
set $allow_access 1;
}
if ($allow_access != 1) {
return 403;
}
map $http_referer $bad_referer {
hostnames;
default 0;
"~yourdomain.com" 0;
"~google.com" 0;
"~bing.com" 0;
"~facebook.com" 0;
"" 1; # 允许空referer
}
server {
...
location ~* \.(jpg|jpeg|png|gif|webp)$ {
if ($bad_referer) {
return 403;
}
}
}
测试配置是否正确:
nginx -t
重载 Nginx:
nginx -s reload
测试方法:
通过以上配置,你可以有效减少其他网站盗用你的图片资源的情况。