NGINX中变量详解

警告
本文最后更新于 2023-03-20,文中内容可能已过时。
以下为资料来源,由本站收集重新整理发布,仅用于个人收藏,转载请直接标注以下来源连接

http Croe模块

- -
$http_user_agent 客户端UA信息
$http_cookie 客户端COOKIE
$cookie_name 参考$arg_name的用法
$arg_name 获取URI中的GET参数,比方说http://localhost:8080/test?class=3,则用$arg_class获取。
注:
1)不区分大小写,例如CLASS=2同样使用$arg_class获取;
2)如果参数escape编码了,使用set_unescape_uri 反编码,
例如:
set_unescape_uri $name $arg_name;
set_unescape_uri $class $arg_class;
echo “name: $name”;
echo “class: $class”
$args 获取url中的GET参数字符串,www.129.com/?name=a1&b=b1,$args=name=a1&b=b1
$binary_remote_addr 二进制格式的客户端地址,例如\xC0\xA8P\x81,表示为192.168.80.1
$body_bytes_sent 响应体的大小,即使发生了中断或者是放弃,也是一样的准确。
$bytes_sent number of bytes sent to a client
$connection connection serial number
$connection_requests current number of requests made through a connection
$content_length 请求头部信息中的Content-Length
$content_type 请求头部信息中的Content-Type
$document_root 变量的值为当前请求的location(http,server,location,location中的if)中root指令中指定的值,或alias的值
$document_uri 同$uri
$host 该变量的值等于请求头中Host的值。如果Host无效时,那么就是处理该请求的server的名称。
在下列情况中,$host变量的取值不同于$http_host变量。
1) 当请求头中的Host字段未指定(使用默认值)或者为空值,那么$host等于server_name指令指定的值。
2) 当Host字段包含端口是,$host并不包含端口号。另外,从0.8.17之后的nginx中,$host的值总是小写。
$hostname 有gethostname返回值设置机器名
$http_name 该变量的值为HTTP 请求头HEADER,具体使用时会转换为小写,并且将“——”(破折号)转换为“_”(下划线)。例如$http_Connection
$https “on” if connection operates in SSL mode, or an empty string otherwise
$is_args “?” if a request line has arguments, or an empty string otherwise
$limit_rate 该变量允许限制连接速率,参考 limit_rate
$msec current time in seconds with the milliseconds resolution (1.3.9, 1.2.6)
$nginx_version 版本
$pid Pid
$pipe “p” if request was pipelined, “.” otherwise (1.3.12, 1.2.7)
$query_string 同$args
$realpath_root an absolute pathname corresponding to the root or alias directive’s value for the current request, with all symbolic links resolved to real paths
$remote_addr 客户端的IP地址
$remote_port 客户端连接端口
$remote_user 变量等于用户的名字,基本身份验证模块使用
$request full original request line
$request_body 该变量包含了请求体的主要信息。该变量与proxy_pass或者fastcgi_pass相关
$request_body_file 客户端请求体的临时文件
$request_completion 如果请求成功完成,那么显示“OK”。如果请求没有完成或者请求不是该请求系列的最后一部分,那么它的值为空。
$request_filename 该变量等于当前请求文件的路径,有指令root或者alias和URI构成
$request_id unique request identifier generated from 16 random bytes, in hexadecimal (1.11.0)
$request_length request length (including request line, header, and request body) (1.3.12, 1.2.7)
$request_method 该变量的值通常是GET或者POST。
$request_time request processing time in seconds with a milliseconds resolution (1.3.9, 1.2.6); time elapsed since the first bytes were read from the client
$request_uri 该变量的值等于原始的URI请求,就是说从客户端收到的参数包括了原始请求的URI,该值是不可以被修改的,不包含主机名,例如“/foo/bar.php?arg=baz”。
$scheme 功能:该变量表示HTTP scheme(例如HTTP,HTTPS),根据实际使用情况来决定,例如:rewrite ^ $scheme://example.com$uri redirect;
$sent_http_name arbitrary response header field; the last part of a variable name is the field name converted to lower case with dashes replaced by underscores
$server_addr 该变量的值等于服务器的地址。通常来说,在完成一次系统调用之后就会获取变量的值,为了避开系统钓鱼,那么必须在listen指令中使用bind参数。
$server_name 该变量为server的名字。
$server_port 该变量等于接收请求的端口
$server_protocol 该变量的值为请求协议的值,通常是HTTP/1.0或者HTTP/1.1
$status response status (1.3.2, 1.2.2)
$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space information about the client TCP connection; available on systems that support the TCP_INFO socket option
$time_iso8601 local time in the ISO 8601 standard format (1.3.12, 1.2.7)
$time_local local time in the Common Log Format (1.3.12, 1.2.7)
$uri 该变量的值等于当前请求中的URI(没有参数,不包括$args)的值。
它的值不同于request_uri,由浏览器客户端发送的request_uri的值。
例如,可能会被内部重定向或者使用index。
另外需要注意:$uri不包含主机名,例如 “/foo/bar.html”
当前判断URL= $scheme://$server_name/$uri