nginx的模块变量(HTTP核心模块变量)

nginx的HTTP核心模块引入了大量的变量,可以在指定范围内使用这些变量的值,可以分为三类:一是客户请求头中发送的变量、二是服务器端响应头中的变量,第三是nginx产生的各种变量,我们可以使用$变量名的形式来引用这些变量。

一、请求头中的变量

规律:都是以$http_开头的变量

  • $http_host 请求的主机名

  • $http_user_agent 请求头中的userAgent信息,一般是客户端浏览器信息

  • $http_referer 服务器请求的来源地址(如我们的网站通过百度的搜索引擎而来,通过百度的某个搜索页点击进来,则这个值就是百度的那个链接页地址)

  • $http_via 获取客户端可能使用的代理

  • $http_x_forworded_for 客户端的真实IP

  • $http_cookie 客户端cookie信息

  • $http_…… http请求头中其他的信息

二、响应头中的变量

都是以sent_开头的变量

  • $sent_http_content_type 响应头中的content-type值,响应内容的类型

  • $sent_http_content_length 响应头中的content-length,响应内容的大小

  • $sent_http_last_modified 修改请求资源的修改日期

  • $sent_http_connection 定义连接是否持续有效或已关闭

  • $sent_http_keep_alive 定义持续连接的时间长度

  • $senthttp…… 响应头中的其他信息

三、nginx产生的变量

  • $arg_XXX 获取的查询字符串(GET参数),XXX为参数名称

  • $args 字符串查询参数

  • $binary_remote_addr 客户端IP地址(以二进制显示)

  • $body_sent_bytes 响应内容的发送的字节数

  • $content_type 请求头中的内容类型

  • $content_length 请求资源的内容大小

  • $cookie_XXX 请求的cookie数据,XXX为cookie参数

  • $document_root web根目录(获取root的定义的值)

  • $document_uri 请求的URI

  • $host 请求的主机名

  • $hostname 请求的系统名称

  • $is_args 是否定义了参数,如果定义了args变量,是值为?,如果未定义,则为空

  • $limit_rate 返回每一个连接的速率

  • $nginx_version nginx的版本号

  • $pid nginx的进程号

  • $query_string 查询字符串

  • $remote_addr 访问者IP

  • $remote_port 客户端socket端口

  • $remote_user 访问者认证信息

  • $realpath_root 返回请求的真实文件路径

  • $request_body 请求主体内容

  • $request_body_file 请求资源的文件路径

  • $request_filename 请求的文件的全文件名

  • $request_method 请求方式

  • $request_uri 请求uri

  • $server_addr 服务器IP

  • $server_name 服务器名称(如域名)

  • $server_port 服务器服务端口

  • $server_protocol 协议及版本号

  • $uri 请求URI(除请求的域名外的部分,等同于$document_uri)