Nginx 中有哪些常用的全局变量?它们分别代表什么?(Nginx全局变量详解)

Nginx 全局变量详解:解析与应用

Nginx 提供了一系列全局变量,这些变量可以在配置文件的不同层级中使用,包括 server、location 甚至 if 块内。这些变量包含了有关请求的各种信息,可以用于条件判断、日志记录、URL 重写等多种用途。以下是 Nginx 中一些常用全局变量的介绍及示例。

通用变量

  1. $args:获取完整的查询字符串,不含问号。例如,请求 http://example.com/index.php?id=1&name=test,那么 $args 的值将是 id=1&name=test。
  2. $arg_name:获取查询字符串中名为 name 的单个值。上述例子中,$arg_id 的值为 1。
  3. $document_root:当前 location 块的根目录。常用于指定文件路径,如读取静态文件。
  4. $host:请求头中的 Host 字段,即被请求的主机名称。
  5. $remote_addr:客户端IP地址。
  6. $remote_user:已认证用户的用户名,常见于 Basic 认证场景。
  7. $request_method:请求方法,如 GET、POST。
  8. $scheme:请求使用的协议,通常是 http 或 https。
  9. $server_name:虚拟主机名称,由 server 块的 server_name 指令定义。
  10. $server_port:服务器监听的端口号。
  11. $status:最终请求的状态码。
  12. $uri:未解码的原始请求URI,包含完整路径。
  13. $request_uri:同 $uri,但在多数情况下 $uri 更常用于配置中。
  14. $is_args:查询字符串的前缀,如果存在查询字符串则是 ?,否则为空。
  15. $request_body:POST 请求体的内容。

条件变量

  1. $fastcgi_status:FastCGI 请求状态。
  2. $proxy_status:Proxy 请求状态。
  3. $upstream_status:Upstream 服务器的请求状态。

日志变量

  1. $time_local:请求开始的时间戳(本地时区)。
  2. $time_iso8601:ISO 8601 格式的日期和时间。
  3. $msec:毫秒级别的请求处理时间。
  4. $request_time:请求处理总时间(从接收到客户端关闭连接为止)。

实战应用

示例1:条件判断

if ($host ~* ^(www\.)?mydomain\.com) {
    set $redirect "yes";
}

示例2:日志输出

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

示例3:重写规则

rewrite ^/(.*)\.html $1 permanent;

以上只是冰山一角,Nginx 全局变量种类繁多,涵盖了请求、响应、环境等各个方面。正确理解和应用这些变量,可以极大地增强 Nginx 的灵活性和功能,无论是在日志分析、权限控制还是 URL 重写等方面都能发挥作用。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 qiqicto@qq.com 举报,一经查实,本站将立刻删除。
赞 (0)
赵其鑫的头像赵其鑫管理团队

相关推荐

返回顶部