Nginx中referer模块

4年前 (2015-12-31) Jason Liu 运维 0评论 已收录 211℃

下面的内容包括:
1 Nginx Referer 模块
2 valid_referers 指令

1 Nginx Referer模块
当一个请求头的Referer字段中包含一些非正确的字段,这个模块可以禁止这个请求访问站点。
这个头可以随意的伪造,因此,使用这个模块并不能100%的阻止这些请求,绝大多数拒绝的请求来自一些典型的浏览器,可以认为这些典型的浏览器并不能提供一个”Referer”头,甚至是那些正确的请求。

2 valid_referers 指令
语法:valid_referersnone | blocked | server_names | string ...;
默认值:no
使用字段:server, location
这个指令在referer头的基础上为 $invalid_referer 变量赋值,其值为0或1。
如果valid_referers列表中没有Referer头的值, $invalid_referer将被设置为1。(请求头中Refererde值不匹配valid_referer中的任何一个值)

如果valid_referers列表中有Referer头的值,$invalid_referer将被设置为0。 (请求头中Refererde值匹配valid_referer中的任意一个值)
参数可以使如下形式:
none 意为不存在的Referer头(表示空的,也就是直接访问,比如直接在浏览器打开一个图片)
blocked 意为根据防火墙伪装Referer头,如:“Referer: XXXXXXX”。
server_names  “Referer” 请求头包含某个虚拟主机名

任意字符串
定义一个服务器名和可选的URI前缀。服务器名允许在开头或结尾使用“*”符号。 当nginx检查时,“Referer”请求头里的服务器端口将被忽略。
正则表达式
必须以“~”符号作为开头。 需要注意的是表达式会从“http://”或者“https://”之后的文本开始匹配。

实例:

valid_referers none blocked server_names
               *.example.com example.* www.example.org/galleries/
               ~\.google\.;

相关推荐

嗨、骚年、快来消灭0回复。