分享最新版 nginx内置变量 大全

  

下面是详细讲解“分享最新版 nginx内置变量 大全”的完整攻略,以及包含两条示例说明。

一、概述

本文主要介绍 nginx 内置变量,并提供了最新版的 nginx 内置变量全集。

二、nginx 内置变量详解

nginx 内置变量主要有以下几种类型:

1. 标量变量

标量变量是 nginx 内置变量中最基础的类型,常用于记录客户端访问信息,例如:$remote_addr 表示客户端 IP 地址;$request_time 表示处理请求的时长。

常见标量变量:

  • $args:表示请求中的参数部分(问号 ? 之后部分);
  • $http_user_agent:表示客户端 User-Agent 信息;
  • $request_uri:表示请求的 URI 地址;
  • $remote_addr:表示客户端 IP 地址;
  • $request_time:表示处理请求的时长;
  • $server_protocol:表示服务器端协议版本信息。

2. 集合变量

集合变量是指多个标量变量组成的变量,常用于记录 HTTP 请求头部信息。

常见集合变量:

  • $http_accept_language:表示客户端能够接收的语言类型;
  • $http_cookie:表示客户端发送的 Cookie 信息;
  • $http_referer:表示客户端请求的来源 URL 地址;
  • $http_user_agent:表示客户端 User-Agent 信息。

3. 嵌套变量

嵌套变量可以把其他类型的内置变量组合起来,形成复杂的变量类型。

常见嵌套变量:

  • $upstream_http_x_xxx:表示 upstream 响应头信息中的指定字段;
  • $if_xxx:表示 if 指令的参数值;
  • $limit_xxx:表示 limit_rate 模块当前限制的速率值。

4. 其他变量

除以上三种类型外,还有一些特殊的内置变量,例如:

  • $status:表示本次请求的响应状态码;
  • $request_method:表示请求的 HTTP 方法;
  • $request_filename:表示请求对应的文件名;
  • $document_root:表示服务器中针对该请求的文档根目录。

三、示例说明

以下是两个实际应用场景的示例说明,以帮助更好地理解 nginx 内置变量的使用。

1. 限制客户端访问速率

使用 $binary_remote_addr 内置变量识别客户端 IP 地址,并结合 limit_rate 模块实现对客户端访问速率的限制。

http {
    limit_rate_zone $binary_remote_addr zone=client:10m;

    server {
        listen 80;

        location / {
            limit_rate    100k;
            limit_rate_after 2m;
            limit_rate_set $limit_rate;
        }
    }
}

2. 统计请求数据

使用 $request_time 内置变量统计每个接口的请求处理时间,可以找到性能瓶颈。

http {
    log_format access_log
        '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" '
        '$request_time';

    server {
        listen 80;

        location / {
            access_log /var/log/nginx/access.log access_log;
        }
    }
}

四、总结

本文介绍了 nginx 内置变量的分类和使用方法,并提供了最新版的 nginx 内置变量全集。同时,结合实际应用场景,为读者提供了两个示例说明,希望能给读者带来帮助。

相关文章