Nginx配置referer校验,实现简单的防盗链
使用
放到 server
块或者 location
块内,以下合法的 Referer 为 空Referer
、example.com
、img.example.com
1 | valid_referers none example.com img.example.com; |
使配置生效
1 | nginx -s reload |
测试
使用 curl 校验
1 | curl -I https://example.com/1.jpg -H 'Referer:http://www.baidu.com' |
说明
Nginx 配置 Referer
模块,用到了 valid_referers
指令,需要配置在 server
或者 location
上
通过指定合法的来源 referer
, 如果 referer
头部包含这个网址,内嵌变量 $invalid_referer
的值将被设置为 0,否则设置为 1
常用
valid_referers none | blocked | server_names | string …;
参数说明:
none:请求头缺少 Referer 字段,即允许空 Referer(浏览器直接访问,就是空 Referer)
blocked:
Referer
不为空,但是里面的值被代理或者防火墙删除了,这些值都不以http://
或者https://
开头,而是Referer: XXXXXXX
这种形式server_names:
Referer
来源头部包含当前的域名任意字符串 :定义服务器名或者可选的 URI 前缀。主机名可以使用
*
开头或结尾,在检测来源头部这个过程中,来源域名中的主机端口将被忽略正则表达式: 第一个符号应为
~
。~
表示排除https://
或http://
开头的字符串,表达式只与http://
或https://
之后的文本匹配。
本文采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 ShiGuang
评论