core module 支持一些内置的变量,与apache使用的变量相一致。
首先,一些变量代表了客户端请求头部的一些字段,如:$http_user_agent, $http_cookie等等。注意,由于这些变量会在请求中定义,所以可能无法保证他们是存在的或者说可以定义到一些别的地方
URI是统一资源;URL是资源的具体位置
URI解析:
https://localhost:80/test1/test2/test.php?k=v
$host='localhost';
$server_port=80;
$request_uri='/test1/test2/test.php?k=v'; ###变量等于包含一些客户端请求参数的原始URI,它无法修改
$document_uri | $uri ='/test1/test2/test.php'; ##请求中的当前URI(不带请求参数,参数位于$args),可以不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改
$document_root='D:\nginx/html'; 【此值是在当前请求root指令中指定的值】
$request_fileName='D:\nginx/html/test1/test2/test.php'; 【由root指令或者由alias指令指定的值与$uri的值拼接而成】
$scheme='http | https';
$server_protocol='请求协议版本:HTTP/1.0 | HTTP/1.1';
$server_addr='服务器地址,有一次调用后就可以确定此值;如果想要绕开系统调用,
则必须在listen中指定地址并且使用bind参数';
$server_.name='服务器名';
$server_port='请求协议';
$nginx_version=‘当前运行的nginx版本号‘;
$args | $query_string=‘请求中的参数’;
$is_args
如果$args设置,值为"?",否则为""
$content_length='请求头的content_length字段';
$content_type=‘请求头中的Content-Type字段‘;
$http_user_agent='浏览器信息';
$http_cookie='请求头中的cookie信息';
$cookie_COOKIE
cookie COOKIE的值。
$body_bytes_sent=‘传送页面的字节数‘;
$arg_PARAMETER=‘这个变量包含在查询字符串时GET请求PARAMETER的值‘;
$limit_rate='限制链接速率';
$request_body_file='客户端请求主体的临时文件名';
$request_method=‘请求的方式’;
$request_body=‘客户端请求的请求主体信息;在使用proxy_pass或fastcgi_pass指令的location中比较有意义‘;
$remote_addr='客户端ip值';
$http_x_forwarded_for='真实客户端ip值';
$binary_remote_addr=‘二进制码形式的客户端地址‘;
$remote_port='客户端端口值';
$remote_user='已认证的用户';
$invalid_referer=‘无效的引用页‘;【用指令valid_referers指定】
·$body_bytes_sent,减去应答头后传送给客户端的字节数,这个变量兼容apache模块mod_log_config的%B参数(在0.3.10前这个变量为$apache_bytes_sent)。
·$bytes_sent,传送给客户端的字节数。
·$connection,连接数。
·$msec,正在写入日志条目的当前时间(精确到百万分之一秒)
·$pipe,如果请求为管道的。
·$request_length,请求主体的长度。
·$request_time,从一个请求发出到而使nginx工作的时间,单位为毫秒(0.5.19版本后可以使用秒为单位)。
·$status,应答的状态(代码)。
·$time_local,写入普通日志格式的当地时间(服务器时间)
HTTP_Proxy代理模块内置变量,可以用于proxy_set_header指令中以创建头部。
$proxy_add_x_forwarded_for
包含客户端请求头中的"X-Forwarded-For",与$remote_addr用逗号分开,如果没有"X-Forwarded-For"请求头,则_add_x_forwarded_for等于$remote_addr
$proxy_host
被代理服务器的主机名与端口号。
$proxy_port
被代理服务器的端口号
$upstream_addr
前端服务器处理请求的服务器地址
$upstream_cache_status
0.8.3版本中其值可能为:
·MISS
·EXPIRED - expired。请求被传送到后端。
·UPDATING - expired。由于proxy/fastcgi_cache_use_stale正在更新,将使用旧的应答。
·STALE - expired。由于proxy/fastcgi_cache_use_stale,后端将得到过期的应答。
·HIT
$upstream_status
前端服务器的响应状态。
$upstream_response_time
前端服务器的应答时间,精确到毫秒,不同的应答以逗号和冒号分开。
$upstream_http_$HEADER
随意的HTTP协议头中的字段,如:
$upstream_http_host | $upstream_http_content_type