nginx 内置变量
内置变量存放在 ngx_http_core_module 模块中,变量的命名方式和 apache 服务器变量是一致的。总而言之,这些变量代表着客户端请求头的内容,例如httpuseragent,http_cookie, 等等。
下面是 nginx 支持的所有内置变量:
$arg_name
这个变量是获取链接中参数名为 name 对应的值;
如请求链接: http://service.shiguofu.cn/test?name=100&a=200
argname=′100′,arg_a = ‘200’
$args
这个变量获取链接中所有的参数,即链接问号后面的所有的东西;
如:http://service.shiguofu.cn/test?name=100&a=200
$args = ‘name=100&a=200’
$binary_remote_addr
客户端的二进制的 ip 地址;
$body_bytes_sent
传输给客户端的字节数,响应头不计算在内;
$bytes_sent
nginx 返回给客户端的字节数,包括响应头和响应体;
$connection
TCP 连接的序列号,并不是一次 http 请求就会更滑一个序列号,http 有 keep-alive 机制,一个序列号会维持
connection_requests
TCP 连接当前的请求数量,服务处理请求的个数,重启后重置为 0
$content_length
“Content-Length” 请求头字段, 客户端请求的头部中的 content-length 值;
$content_type
“Content-Type” 请求头字段
$cookie_name
获取 cookie 名称为 name 的 cookie 值;
如 cookie:PHP_VERSION: 1.0; NAME:XIAOMING;….
$cookie_NAME = ‘XIAOMING
document_root
当前请求的文档根目录或别名,即配置文件中的 root 目录;
$document_uri
即请求的 uri;
如:http://service.shiguofu.cn/test/index?a=1
$document_uri = /test/index
$host
请求的 host, 优先级:HTTP 请求行的主机名 > 请求头中的”HOST”字段 > 符合请求的服务器名
$hostname
请求的服务主机名
$http_name
匹配任意请求头字段; 变量名中的后半部分“name”可以替换成任意请求头字段,如在配置文件中需要获取 http 请求头:“Accept-Language”,那么将“-”替换为下划线,大写字母替换为小写,形如:$http_accept_language 即可;
$https
如果开启了 SSL 安全模式,值为“on”,否则为空字符串;
$is_args
如果请求中有参数,值为“?”,否则为空字符串;
$msec
当前的 Unix 时间戳;
$nginx_version
nginx 版本;
$pid
nginx 进程 pid
$pipe
如果请求来自管道通信,值为“p”,否则为“.”
$proxy_protocol_addr
获取代理访问服务器的客户端地址,如果是直接访问,该值为空字符串。有些懵懂;
query_string
链接中的参数列表,同 $args;
$realpath_root
当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径;
$remote_addr
客户端地址
$remote_port
客户端端口
$remote_user
用于 HTTP 基础认证服务的用户名;
#### $request
HTTP 请求的方法/路径及版本;
如: http://service.shiguofu.cn/test/index
$request = GET /test/index HTTP/1.1
$request_body
客户端的请求主体;post 中的 body 的数据部分
$request_completion
如果请求成功,值为”OK”,如果请求未完成或者请求不是一个范围请求的最后一部分,则为空;
request_filename
当前连接请求的文件路径,由 root 或 alias 指令与 URI 请求生成;
$request_length
请求的长度 (包括请求的地址, http 请求头和请求主体);
$request_method
HTTP 请求方法,通常为“GET”“POST”等
$request_time
处理客户端请求使用的时间; 从读取客户端的第一个字节开始计时;
$request_uri
客户端请求的 uri;
如:http://service.shiguofu.cn/test/index?a=1&b=200
$request_uri = /test/index?a=1&b=200
$scheme
请求使用的 Web 协议, “http” 或 “https”
$sent_http_name
设置任意 http 响应头字段; 变量名中的后半部分“name”可以替换成任意响应头字段,如需要设置响应头 Content-length,那么将“-”替换为下划线,大写字母替换为小写,形如:$sent_http_content_length 4096 即可;
$server_addr
服务器端地址;如 : 172.27.0.15
$server_name
服务器名;如 service.shiguofu.cn
$server_port
服务器端口号
$server_protocol
服务器的 HTTP 版本, 通常为 “HTTP/1.0” 或 “HTTP/1.1”
$status
HTTP 响应代码
tcpinfortt,tcpinfo_rttvar, tcpinfosndcwnd,tcpinfo_rcv_space
客户端 TCP 连接的具体信息
$time_iso8601
服务器时间的 ISO 8610 格式
$time_local
服务器时间(LOG Format 格式)
$uri
请求中的当前 URI(不带请求参数,参数位于 $args);