含义:
用于阻止 Referer 头字段为无效值的请求访问站点。需记住的是,使用适当的 Referer 字段值来伪造请求非常容易,因此本模块的预期目的不是要彻底阻止此类请求,而是阻止常规浏览器发送的大量流量请求。还应该考虑到,即使是有效请求,常规浏览器也可能不发送 Referer 字段。在需要添加验证的server中添加如下配置,![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
server{ listen 80; server_name www.kevin.com; location ~*\.(GIF|jpg|png|jpeg){ root /home; valid_referers shop.kevin.com; if ($invalid_referer) { return 403; } } }
按照上面的配置,如果请求头中不包含referers参数则将无法通过验证。
valid_referers参数说明:
none:不包含referers参数也可以通过验证。
blocked:原本请求中包含了该参数,但是被防火墙或代理服务器过滤了,此时也可以通过验证。
server_name:Referer请求头字段包含一个服务器名称。
任意字符串:开头和结尾可以包含*。
正则表达式:第一个符号应为~。要注意的是,表达式只与http://或https://之后的文本匹配。
完整配置示例:
valid_referers none blocked server_names
*.example.com example.* www.example.org/galleries/
~\.google\.;
内嵌变量:
$invalid_referer:如果Referer请求头字段的值有效,则为空字符串,否则为1。
HTTP Headers Referrer-Policy
关于Referrer的详细介绍。