Nginx防盗链
系列 - Security Config of Nginx
location ~ .*\.(bmp|gif|ico|jpeg|jpg|png|webp|svg)$ {
...
valid_referers none blocked server_names
*.example.com www.bing.com ~\.google\.;
if ($invalid_referer) {
return 444;
}
...
}
$invalid_referer可跟参数:
none
: 请求头中缺少“Referer”字段。blocked
: “Referer”字段出现在请求头中, 但其值已被防火墙或代理服务器删除; 这些值是不以“http://”或“https://”开头的字符串。server_names
: 服务器名称“Referer”请求头字段包含一个服务器名称。任意字符串
定义服务器名称和可选的URI前缀。服务器名称的开头或结尾可以有“*”。在检查过程中, “Referer”字段中的服务器端口被忽略。
正则表达式
第一个符号应该是“~”。应该注意的是, 表达式将与“http://”或“https://”之后开始的文本匹配。
除了本文这种基于http_referer
判定非法请求的方式, 还有一种计算MD5的判定, 不过比较麻烦所以暂且不表。