使用

放到 server 块或者 location 块内,以下合法的 Referer 为 空Refererexample.comimg.example.com

1
2
3
4
valid_referers none example.com img.example.com;
if ($invalid_referer) {
return 403 ;
}

使配置生效

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:// 之后的文本匹配。