nginx 内置变量 详解

311 阅读1分钟

Nginx 内置变量在配置文件中非常有用,可以帮助实现复杂的请求处理逻辑。以下是一些常见 Nginx 内置变量的详细解释:

请求相关变量

  1. $arg_name

    • 描述:获取请求 URL 中的特定查询参数值。
    • 示例:对于请求 http://example.com/page?user=123$arg_user 的值为 123
  2. $args

    • 描述:获取请求 URL 中的查询字符串部分(不包括问号)。
    • 示例:对于请求 http://example.com/page?user=123&lang=en$args 的值为 user=123&lang=en
  3. $request_uri

    • 描述:包含完整的请求 URI,包括参数部分。
    • 示例:对于请求 http://example.com/page?user=123$request_uri 的值为 /page?user=123
  4. $uri

    • 描述:请求的当前 URI,不包括参数部分,可能会在内部重定向中被修改。
    • 示例:初始值与 $request_uri 相同,但在重写规则中可能被修改。
  5. $document_uri

    • 描述:与 $uri 相同,用于表示请求的当前 URI。
  6. $request_method

    • 描述:请求的方法,如 GETPOSTPUT 等。
  7. $remote_addr

    • 描述:客户端的 IP 地址。
  8. $remote_port

    • 描述:客户端连接的端口号。
  9. $remote_user

    • 描述:如果请求通过 HTTP 基本认证成功,表示认证的用户名。
  10. $host

    • 描述:请求中的 Host 头部字段。如果没有该字段,则使用处理请求的服务器名称。

响应相关变量

  1. $status

    • 描述:响应的 HTTP 状态码。
  2. $sent_http_header_name

    • 描述:用于在响应中获取特定的 HTTP 头部。例如,$sent_http_content_type 获取响应的 Content-Type 头部。

服务器相关变量

  1. $server_addr

    • 描述:服务器的 IP 地址。注意,获取此变量可能会导致一次系统调用,影响性能。
  2. $server_port

    • 描述:服务器监听的端口号。
  3. $server_name

    • 描述:处理请求的服务器名称。
  4. $hostname

    • 描述:服务器的主机名。

连接相关变量

  1. $connection

    • 描述:连接的唯一编号。
  2. $connection_requests

    • 描述:当前连接已经处理的请求数量。

其他常用变量

  1. $binary_remote_addr

    • 描述:客户端 IP 地址的二进制形式。
  2. $scheme

    • 描述:请求使用的协议(httphttps)。
  3. $time_local

    • 描述:请求处理的本地时间,格式为 day/month/year:hour:minute:second zone
  4. $http_user_agent

    • 描述:客户端的 User-Agent 头部字段。
  5. $http_referer

    • 描述:客户端的 Referer 头部字段。

使用注意事项

  • 性能影响:某些变量(如 $server_addr)可能会触发系统调用,频繁使用可能影响性能。
  • 安全性:请求头相关变量(如 $http_ 前缀变量)可以被客户端伪造,使用时需要谨慎验证。
  • 灵活性:这些变量可以在 nginx.conf 中用于条件判断、日志格式化、重写规则、反向代理设置等,提供了强大的灵活性。

通过理解和正确使用这些内置变量,可以极大地提高 Nginx 服务器的配置效率和灵活性。