- 系统运维
- Nginx 内嵌变量
Nginx 内嵌变量是非常常用的,记录下备查。
Nginx 内嵌变量由 ngx_http_core_module 模块支持,变量名与 Apache 服务器对应,这些变量可以表示客户端的请求头字段,诸如 $http_user_agent、$http_cookie 等等。 nginx 也支持其他变量:
|参数名称|说明|
|-|-|
|$arg_name|请求中的的参数名,即 “?” 后面的 arg_name=arg_value 形式的 arg_name,如 /index.php?www=www.tanqub.com,可以用 $arg_www 就是 www.tanqub.com|
|$args|请求中的参数值|
|$binary_remote_addr|客户端地址的二进制形式,固定长度为 4 个字节|
|$body_bytes_sent|传输给客户端的字节数,响应头不计算在内;这个变量和 Apache 的 mod_log_config 模块中的 “% B” 参数保持兼容|
|$bytes_sent|传输给客户端的字节数|
|$connection|TCP 连接的序列号|
|$connection_requests|TCP 连接当前的请求数量|
|$content_length|“Content-Length” 请求头字段|
|$content_type|“Content-Type” 请求头字段|
|$cookie_name|cookie 名称|
|$document_root|当前请求的文档根目录或别名|
|$document_uri|同 $uri|
|$host|优先级如下:HTTP 请求行的主机名 >”HOST” 请求头字段 > 符合请求的服务器名|
|$hostname|主机名|
|$http_name|匹配任意请求头字段; 变量名中的后半部分 “name” 可以替换成任意请求头字段,如在配置文件中需要获取 http 请求头:“Accept-Language”,那么将 “-” 替换为下划线,大写字母替换为小写,形如:$http_accept_language 即可。|
|$https|如果开启了 SSL 安全模式,值为 “on”,否则为空字符串。|
|$is_args|如果请求中有参数,值为 “?”,否则为空字符串。|
|$limit_rate|用于设置响应的速度限制,详见 limit_rate。|
|$msec|当前的 Unix 时间戳 (1.3.9, 1.2.6)|
|$nginx_version|nginx 版本|
|$pid|工作进程的 PID|
|$pipe|如果请求来自管道通信,值为 “p”,否则为 “.” (1.3.12, 1.2.7)|
|$proxy_protocol_addr|获取代理访问服务器的客户端地址,如果是直接访问,该值为空字符串。(1.5.12)|
|$query_string|同 $args,然而 $query_string 是只读的不会改变|
|$realpath_root|当前请求的文档根目录或别名的真实路径,会将所有符号连接转换为真实路径。|
|$remote_addr|客户端地址|
|$remote_port|客户端端口|
|$remote_user|用于 HTTP 基础认证服务的用户名|
|$request|代表客户端的请求地址|
|$request_body|客户端的请求主体,此变量可在 location 中使用,将请求主体通过 proxy_pass, fastcgi_pass, uwsgi_pass, 和 scgi_pass 传递给下一级的代理服务器。|
|$request_body_file|请求正文的临时文件名。处理完成时,临时文件将被删除。 如果希望总是将请求正文写入文件,需要开启 client_body_in_file_only。 如果在被代理的请求或 FastCGI 请求中传递临时文件名,就应该禁止传递请求正文本身。 使用 proxy_pass_request_body off 指令 和 fastcgi_pass_request_body off 指令 分别禁止在代理和 FastCGI 中传递请求正文。|
|$request_completion|如果请求成功,值为”OK”,如果请求未完成或者请求不是一个范围请求的最后一部分,则为空。|
|$request_filename|当前连接请求的文件路径,由 root 或 alias 指令与 URI 请求生成。|
|$request_length|请求的长度 (包括请求的地址,http 请求头和请求主体)|
|$request_method|HTTP 请求方法,通常为 “GET” 或 “POST”|
|$request_time|处理客户端请求使用的时间;从读取客户端的第一个字节开始计时。|
|$request_uri|这个变量等于包含一些客户端请求参数的原始 URI,它无法修改,请查看 $uri 更改或重写 URI,不包含主机名,例如:”/sai/test.php?arg=www”。|
|$scheme|请求使用的 Web 协议,“http” 或 “https”|
|$sent_http_name|可以设置任意 http 响应头字段; 变量名中的后半部分 “name” 可以替换成任意响应头字段,如需要设置响应头 Content-length,那么将 “-” 替换为下划线,大写字母替换为小写,形如:$sent_http_content_length 4096 即可。|
|$server_addr|服务器端地址,需要注意的是:为了避免访问 linux 系统内核,应将 ip 地址提前设置在配置文件中。|
|$server_name|服务器名|
|$server_port|服务器端口|
|$server_protocol|服务器的 HTTP 版本,通常为 “HTTP/1.0” 或 “HTTP/1.1”|
|$status|HTTP 响应代码|
|$time_iso8601|服务器时间的 ISO 8610 格式|
|$time_local|服务器时间(LOG Format 格式) ,nginx 处理完成打印日志的时间,不是请求发出的时间|
|$uri|请求中的当前 URI (不带请求参数,参数位于 $args),可以不同于浏览器传递的 $request_uri 的值,它可以通过内部重定向,或者使用 index 指令进行修改,$uri 不包含主机名,如”/foo/bar.html”。|