Nginx变量
1.http请求相关的变量
arg_参数名 # URL中某个具体参数值
query_string # 与args变量完全相同
args # 全部URL参数
is_args # 如果请求url 有参数返回?否则返回空
content_length #http请求头Content-Length的值
content_type # 请求头Content-Type的值
uri # 请求的uri,不包括?后的参数
document_uri # 同uri
request_uri # 包括uri+?后的参数
scheme # 协议名
request_method # 请求方法 GET、POST
request_length # 请求内容的大小,包括请求行,请求头,请求包体
remote_user # auth_basic中的用户名
request_body_file #临时存放请求包体的文件,当请求包体很大的时候会生成
request_body # 请求包体,当使用反向代理且设定用内存来暂存包体时才会生成
request # 请求行,如GET /?a=1&b=22 HTTP/1.1
host # 域名,先从请求行获取,如果有Host这个请求头就用该请求头替换。如果前二者都取不到,使用server_name中匹配到url的那个域名。
http_请求头名字 # 返回一个具体请求头的名字。如 http_host(请求头中的Host项),http_user_agent(请求头中的User-Agent项,后面同理),http_referer,http_via,http_x_forwarded_for,http_cookie,像这6类,nginx可能会做一些处理,其他的http_xxx则原样输出
2.tcp连接相关的变量
binary_remote_addr #客户端ip的整型格式,ipv4是4字节,ipv6是16字节。
remote_addr # 客户端IP
remote_port # 客户端端口,就是浏览器开的端口
connection_requests # 当前连接上执行过的请求数,对keepalived连接有意义
proxy_protocol_addr # 若使用了proxy_protocol协议则返回协议中的地址,否则返回空。例如,当做反向代理时,可以通过X-Real-IP 或者 X-Forwarded-For 获取起始客户端IP。但是如果是通过TCP层使用反向代理上游服务就不能通过这两个获取真实客户端ip,此时可以用$proxy_protocol_addr
proxy_protocol_port # 同上
server_addr # 服务端IP
server_port # 服务端端口
server_protocol # 服务端协议,如HTTP/1.1
3.nginx处理请求过程产生的变量
request_time # 请求处理的耗时,秒
server_name # 匹配上请求的server_name,因为server_name指令可以指定多个域名
https # 开启了ssl则返回on,否则空
request_completion # 请求处理完返回ok,否则返回空
request_id # 请求的id,随机生成,16个字节
request_filename/document_root/realpath_root # 前面描述过,是实际访问文件的路径和目录路径
limit_rate # 客户端响应的速度上限
4.发送http响应时的变量
body_bytes_sent # 响应中body包体的长度
bytes_sent # 全部http响应的长度,包括响应头,响应体
status # 状态码
5.nginx系统变量(不随请求而发生变化)
pid # 所属worker进程的pid
可以使用 set $变量名 值; 来定义变量或者改变量的值。