Nginx运维之五 Nginx变量

常见变量


#request line的请求参数(例如,在请求/index.html?width=400&height=200 中, $args 表示字符串 width=400&height=200)
$args

#二进制的客户端地址,4字节的IPv4地址或16字节的IPv6地址
$binary_remote_addr

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

#发送给客户端的字节数
$bytes_sent

#连接序列号
$connection

#当前通过连接进行的请求数量
$connection_requests

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

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

#root or alias directive’s value for the current request
$document_root

#同 $uri
$document_uri
 
#顺序取值依次为 请求机器的host name 请求头的“Host”字段的host name 或者与请求匹配的服务器名
$host

# host name
$hostname

#如果连接以SSL模式运行为”on“,否则为空字符串
$https

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

#setting this variable enables response rate limiting; see limit_rate
$limit_rate

#当前时间以毫秒分辨率为单位
$msec

#nginx version
$nginx_version

#PID of the worker process
$pid

#流请求为“p” ,否则“.”
$pipe

#获取代理访问服务器的客户端地址,如果是直接访问,该值为空字符串
#必须先通过在listen指令中设置proxy_protocol参数来启用PROXY协议。
$proxy_protocol_addr

#获取代理访问服务器的客户端端口,如果是直接访问,该值为空字符串
#必须先通过在listen指令中设置proxy_protocol参数来启用PROXY协议。
$proxy_protocol_port

# 同$args
$query_string

##当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径
$realpath_root

#client address
$remote_addr

#client port
$remote_port

#提供基本身份验证的用户名
$remote_user

#完整的请求地址
$request

#请求体,此变量可在location中使用,将请求主体通过proxy_pass,fastcgi_pass,uwsgi_pass和scgi_pass传递给下一级的代理服务器
$request_body

#将客户端请求主体保存在临时文件中。文件处理结束后,此文件需删除。如果需要之一开启此功能,需要设置client_body_in_file_only。如果将次文件传递给后端的代理服务器,需要禁用request body,即设置proxy_pass_request_body off,fastcgi_pass_request_body off,uwsgi_pass_request_body off,or scgi_pass_request_body off
$request_body_file

#请求完成则为“OK”,否则为空字符串
$request_completion

#当前连接请求的文件路径,由root或alias指令与URI请求生成
$request_filename

#生成的十六进制唯一16位随机请求标识符
$request_id

#请求长度(包括请求行、请求头和请求体)
$request_length

#请求方法通常是“GET” or “POST”
$request_method

#以毫秒分辨率为单位请求处理时间;从客户端读取第一字节以来所经过的时间
$request_time

#完整原始请求URI(带参数)
$request_uri

#请求协议头, “http” or “https”
$scheme

#接受请求的服务器的地址,计算此变量的值通常需要一次系统调用。 为了避免系统调用,listen指令必须指定地址并使用bind参数。
$server_addr

#接受请求的server名称
$server_name

#接受请求的server端口
$server_port

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

#响应码
$status

#有关客户端TCP连接的信息; 在支持TCP_INFO套接字选项的系统上可用
$tcpinfo_rtt, $tcpinfo_rttvar, $tcpinfo_snd_cwnd, $tcpinfo_rcv_space

#ISO 8601标准格式的本地时间
$time_iso8601

#公共日志格式中的本地时间
$time_local

#请求中的当前URI(不带请求参数,参数位于$args),$uri的值可以在请求处理期间改变,例如。 当进行内部重定向时,或当使用索引文件时。
$uri

拼接变量

$arg_NAME

$arg_NAME可以用来获取GET请求中NAME参数的值,可以把前缀$arg_加上任意GET请求中NAME参数名称,该组合拼接变量的值即为GET请求中NAME参数的值。

/index.html?param=nicai,可以用$arg_param 取得 nicai 这个值.

$cookie_NAME

$cookie_NAME 可以匹配任意cookie中的变量,可以把前缀$cookie_加上任意cookie变量的名称,该组合拼接变量的值即为cookie名称变量的值。
例如:

$cookie_id

$http_NAME

$http_NAME可以用来获取任意请求头字段;可以把变量名中的后半部分NAME可以替换成任意请求头字段,则可以获取当前请求头字段的取值,如在配置文件中需要获取http请求头:Accept-Language,使用$http_accept_language即可 。

案例:

# 获取cookie
$http_cookie 
 
$http_post

#获取referer
$http_referer

#获取user_agent
$http_user_agent

#获取请求来源的IP地址
$http_x_forwarded_for

$sent_http_NAME

$sent_http_NAME可以用来获取任意http响应头字段;变量名中的后半部分NAME可以替换成任意响应头字段,如需要获取响应头Content-length$sent_http_content_length即可

案例如下:

$sent_http_cache_control

$sent_http_connection

$sent_http_content_type

$sent_http_keep_alive

$sent_http_last_modified

$sent_http_location

$sent_http_transfer_encoding

$sent_trailer_NAME

$sent_trailer_name可以用来获取任意http响应字段;变量名中的后半部分NAME可以替换成任意响应字段

备注:
Request-Line = Method SP Request-URI SP HTTP-Version CRLF
例:
GET /icwork/?search=product HTTP/1.1

猜你喜欢

转载自blog.csdn.net/weixin_43430036/article/details/83586389
今日推荐