nginx中文文档-ngx_http_referer_module

此页面版本:2016-06-08
ngx_http_referer_module模块用于阻止无效的请求头域“Referer”的网站访问。

需要知道的是,伪造Referer是很简单的。启用此模块并不是用来阻止这些请求的,而只是对正常的浏览器请求进行阻止。应该考虑到,正规的浏览器即使可用的请求,可能也不会发送“Referer”头域。

示例配置

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

if ($invalid_referer) {
    return 403;
}

referer_hash_bucket_size

语法:referer_hash_bucket_size size
默认:referer_hash_bucket_size 64
上下文:server, location
版本:1.0.5+

设置可用的referer哈希表的桶大小。

referer_hash_max_size

语法:referer_hash_max_size size
默认:referer_hash_max_size 2048
上下文:server, location
版本:1.0.5+

设置referer哈希表的最大大小。

valid_referers

语法:valid_referers none | blocked | server_names | string
默认:—
上下文:server, location

设置“Referer”头域用于设置内嵌变量$invalid_referer为一个空字符串。否则变量值设置为“1”,匹配是大小写不敏感的。
参数可以是以下的值:
none
请求头域中没有“Referer”

blocked
请求头域中有“Referer”,但被防火墙或代理服务器删除了,这种值是不以“http://”和“https://”开头的字符串。

server_names
请求头域“Referer”包含任何一个服务器名称。

arbitrary string(任意字符串)
定义一个服务器名称和一个可选的URI前缀。服务器名称可以包含“*”,位于开始或结尾。在检查过程中,服务器端口在“Referer”中会被忽略。

regular expression(正则表达式)
第一个标识为“~”,需要注意的是,正则表达式匹配“http://”和“https://”后面的文本。

例子:

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

内嵌变量


$invalid_referer
如果“Referer”字段的值被认为是合法的,值为空字符串,否则值为“1”。

nginx中文文档-ngx_http_realip_module

此页面版本:2016-06-08
ngx_http_realip_module模块用于通过一个指定的头域改变客户端地址。默认情况下,该模块不会构建,需要通过–with-http_realip_module参数启用。

示例配置

set_real_ip_from  192.168.1.0/24;
set_real_ip_from  192.168.2.1;
set_real_ip_from  2001:0db8::/32;
real_ip_header    X-Forwarded-For;
real_ip_recursive on;

set_real_ip_from

语法:set_real_ip_from address | CIDR | unix:
默认:—
上下文:http, server, location

定义可信的地址,可以用来正确的替换IP地址。如果特殊值unix:被指定,则所有UNIX-domain sockets都会被信任。
从1.3.0 和 1.2.1版本起,开始支持ipv6地址。

real_ip_header

语法:real_ip_header field | X-Real-IP | X-Forwarded-For | proxy_protocol
默认:real_ip_header X-Real-IP
上下文:http, server, location

定义用于替换地址的请求头域。
X-Real-IP和X-Forwarded-For参数可以包含可选的端口号(1.11.0+)。地址和端口号必须根据RFC3986指定。
proxy_protocol参数(1.5.12+)从代理协议头中改变客户端地址。代理协议必须提前通过listen指令的proxy_protocol参数开启。

real_ip_recursive

语法:real_ip_recursive on | off
默认:real_ip_recursive off
上下文:http, server, location
版本:1.3.0+,1.2.1+

如果递归查找禁用,匹配任何一个可信IP地址的客户端地址会被替换成real_ip_header指令定义的请求头域的最后一个地址。如果递归查找启用,匹配任何一个可信IP地址的客户端地址会被替换为请求头域最后一个非可信的IP地址。

内嵌变量


$realip_remote_addr
保留客户端原始地址(1.9.7+)


$realip_remote_port
保留客户端原始端口号(1.11.0+)