nginx中文文档-ngx_http_access_module

本文介绍nginx的请求许可模块。

ngx_http_access_module模块允许通过地址限制客户端的访问权限。
访问权可以通过密码或子请求的方式进行限制。同时通过密码和地址限制访问使用satisfy指令控制。
示例配置

location / {
    deny  192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
    allow 2001:0db8::/32;
    deny  all;
}

检测原则是按顺序匹配到第一条符合的规则即可,在这个例子中,只允许IPv4地址段192.168.1.0/24和10.1.1.0/16并且不包括192.168.1.1的客户端访问,只允许2001:0db8::/32段的IPv6地址客户端访问。为防止使用很多IP地址进行配置,可以用ngx_http_geo_module模块进行更好的配置。

allow

语法:allow address | CIDR | unix: | all;
默认:—
上下文:http, server, location, limit_except

定义一个网络或地址的可访问权限,如果使用unix:(1.5.1+),则允许所有UNIX-domain的socket连接

deny

语法:deny address | CIDR | unix: | all;
默认:—
上下文:http, server, location, limit_except

定义一个网络或地址的禁止访问权限,如果使用unix:(1.5.1+),则禁止所有UNIX-domain的socket连接

nginx http_core模块内嵌变量

此页面版本:2016-06-15
本文介绍nginx的http_core模块的内嵌变量

ngx_http_core_module模块支持内嵌变量与Apache服务器变量名称一致。首先,这些变量体现请求头域,如$http_user_agent,$http_cookie等。还有其他的变量:

$arg_name
在请求中name参数


$args
请求的所有参数


$binary_remote_addr
客户端地址的二进制形式,值的长度总是4个字节


$body_bytes_sent
发送到客户端的字节数,不算响应头。这个变量与Apache的mod_log_config模块的“%B”参数兼容。


$bytes_sent
发送到带客户端的字节数(1.3.8+,1.2.5+)


$connection
连接序列号(1.3.8+,1.2.5+)


$connection_requests
当前连接中的请求数(1.3.8+,1.2.5+)


$content_length
请求头中的“Content-Length”


$content_type
请求头中的“Content-Type”


$cookie_name
名称为name的cookie的值


$document_root
当前请求的root或alias指令的值


$document_uri
同$uri


$host
按此优先级:请求中的Host字段,或服务器名称匹配请求的值


$hostname
主机名


$http_name
任意请求头域,变量名的最后一部分name是将域转为小写并将“-”替换为“_”


$https
如果通过SSL连接则值为“on”,否则是空字符串


$is_args
如果请求有参数则值为“?”,否则是空字符串


$limit_rate
设置此值开启响应的限速


$msec
当前时间的秒数,精确到毫秒(1.3.9+, 1.2.6+)


$nginx_version
nginx版本


$pid
工作进程的PID


$pipe
如果请求是流水线(pipelined)值为“p”,否则为“.”(1.3.12+, 1.2.7+)


$proxy_protocol_addr
代理协议头中的客户端地址,如果没有则为空字符串(1.5.12+)
代理协议必须提前在listen指令的proxy_protocol参数开启。


$proxy_protocol_port
代理协议头中的客户端端口号,如果没有则为空字符串(1.11.0+)
代理协议必须提前在listen指令的proxy_protocol参数开启。


$query_string
同$args


$realpath_root
将一个绝对路径与符号连接解析成相对路径


$remote_addr
客户端地址


$remote_port
客户端端口


$remote_user
Basic验证的用户名


$request
完整的请求行


$request_body
请求内容


$request_body_file
带有请求内容的临时文件名称


$request_completion
如果请求完成了,值为“OK”,否则为空字符串


$request_filename
当前请求的文件路径,基于root和alias指令与请求URI


$request_id
唯一的请求标识符,从16个随机字节生成,为16进制(1.11.0)


$request_length
请求长度(包括请求行、头部、正文内容)(1.3.12+, 1.2.7+)


$request_method
请求方法,通常是“GET”或“POST”


$request_time
处理请求的时间秒数,精确到毫秒(1.3.9+, 1.2.6+)


$request_uri
完整的请求URI(带参数)


$scheme
请求模式,“http”或“https”


$sent_http_name
任意响应头域,最后一部分name将名称转为小写并将“-”替换为“_”


$server_addr
服务器接收请求的地址
计算该变量的值需要一次系统调用,要避免系统调用,listen指令必须定义地址并使用bind参数


$server_name
处理请求的服务器名称


$server_port
处理请求的服务器端口


$server_protocol
请求协议,通常是“HTTP/1.0”,“HTTP/1.1”或“HTTP/2.0”


$status
响应状态码(1.3.2+, 1.2.2+)


$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space
客户端TCP连接的信息,在支持TCP_INFO socket选项的系统中可用


$time_iso8601
ISO 8601格式的本地时间(1.3.12+, 1.2.7+)


$time_local
普通日志格式的本地时间(1.3.12+, 1.2.7+)


$uri
当前请求的标准化URI
$uri的值在处理请求时可能会发生变化,如内部重定向或使用索引文件