Nginx 服务器的配置文件中可以包含一些预设的变量,以帮助大家获取Nginx 自身和网络等方面的信息供配置使用。本附录为大家整理和收集Nginx服务器中常用的内置变量,并对变量的含义做了相应的解释,供大家在使用中查询。如果在对Nginx服务器配置的过程中出现此附录未收录的内置变量,请大家到Nginx官方网站查询。
以下是常用的Nginx 服务器内置变量:
$arg_PARAMETER 客户端GET请求中变量名PARAMETER参数的值
$args 客户端GET请求中的参数
$binary_remote_addr 二进制码形式的客户端地址
$body_bytes_sent 已发送的消息体字节数
$content_length 请求头中的Content-Length字段
$content_type 请求头中的Content-Type字段。
$cookie_COOKIE 客户端请求中cookie COOKIE的值
$document_root 当前请求在root指令中指定的值
$document_uri 与$uri相同。
$host 请求中的主机头(Host)字段,如果请求中的主机头不可用或者空,则为处理请求的server名称(处理请求的server的server_name指令的值)。值为小写,不包含端口。
$hostname 机器名使用 gethostname系统调用的值
$http_cookie 客户端的cookie信息
$http_host 与$host相同,但如果请求信息中没有Host行,则可能不同
$http_referer 引用地址
$http_user_agent 客户端代理信息
$http_via 最后一个访问服务器的IP地址
$http_x_forwarded_for相当于网络访问路径
$http_HEADER HTTP请求头中的内容,HEADER为HTTP请求中的内容转为小写,-变为_(破折号变为下划线),例如:$http_user_agent(Uaer-Agent的值), $http_referer...;
$sent_http_HEADER HTTP响应头中的内容,HEADER为HTTP响应中的内容转为小写,-变为_(破折号变为下划线),例如: $sent_http_cache_control, $sent_http_content_type...;
$is_args 如果$args有值,则等于"?",否则为""。
$limit_rate 这个变量可以限制连接速率。
$nginx_version 当前运行的nginx版本号。
$query_string 与$args相同。
$pid 当前Nginx 服务器主进程的进程ID
$remote_addr 客户端的IP地址。
$remote_port 客户端的端口。
$remote_user 已经经过Auth Basic Module验证的用户名。
$request 客户端请求
$request_filename 当前连接请求的文件路径名,由root或alias指令与URI请求生成。
$request_body 客户端请求报文体。在使用proxy_pass或fastcgi_pass指令的location中比较有意义。
$request_body_file 客户端请求主体信息的临时文件名。
$request_method请求方法,比如GET、POST等
$request_completion 如果请求成功,设为"OK";如果请求未完成或者不是一系列请求中最后一部分则设为空。
$request_uri 请求的URI,带参数,不包含主机名
$scheme 所用的协议,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;
$server_addr 服务器地址,如果没有用listen 指明服务器地址,使用这个变量将发起一次系统调用以取得地址(这样会造成服务器浪费)
$server_name 服务器名称。
$server_port 请求到达服务器的端口号。
$server_protocol 请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
$uri 请求中的当前URI(不带请求参数,参数位于$args),不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。不包括协议和主机名,例如/foo/bar.html
参考文献:http://nginx.org/en/docs/varindex.html