Nginx 内置变量详解:请求处理与服务器交互的关键

需积分: 0 0 下载量 112 浏览量 更新于2024-08-04 收藏 6KB MD 举报
本文将详细介绍Nginx内置的预定义变量及其作用,这些变量在配置文件中被广泛使用,以实现动态处理HTTP请求、优化性能和实现复杂逻辑。 Nginx是一个高性能的Web服务器和反向代理服务器,其内置了许多预定义变量,允许管理员根据这些变量来定制响应和配置。以下是一些重要的Nginx内置预变量: 1. `$args` 和 `$query_string`: 这两个变量都表示请求中的参数值,通常是从URL的查询字符串获取的。例如,对于`http://example.com/?name=value`,`$args`和`$query_string`的值都是`name=value`。 2. `$arg_NAME`: 用于获取GET请求中特定参数`NAME`的值。例如,如果请求中有参数`name=John`,则`$arg_name`的值为`John`。 3. `$is_args`: 如果请求有参数,此变量的值为`?`,否则为空字符串。 4. `$uri`: 表示请求的当前URI,不包括主机名和参数。这个值可能因为内部重定向或`index`指令而改变。 5. `$document_uri` 和 `$request_uri`: 它们与`$uri`类似,但`$request_uri`包含了请求参数。 6. `$document_root`: 代表当前请求的文档根目录或别名,用于定位静态文件。 7. `$host`: 提供了HTTP请求行中的主机名,或者"HOST"请求头字段的值,若两者均无,则使用处理请求的服务器名称。 8. `$hostname`: 返回服务器的主机名。 9. `$https`: 如果Nginx工作在SSL模式下,其值为`on`,否则为空。 10. `$binary_remote_addr`: 客户端IP地址的二进制形式,常用于速率限制等场景。 11. `$body_bytes_sent` 和 `$bytes_sent`: 分别表示发送到客户端的字节数(不包括响应头)和总字节数(包括响应头)。 12. `$connection`: TCP连接的序列号,可用于跟踪连接。 13. `$connection_requests`: 在当前TCP连接上已处理的请求数量。 14. `$content_length`: "Content-Length"请求头字段的值,表示客户端发送的数据长度。 15. `$content_type`: "Content-Type"请求头字段的值,表明请求资源的MIME类型。 16. `$cookie_name`: 获取指定名称的Cookie值。 17. `$limit_rate`: 可用于限制响应数据的传输速率。 18. `$msec`: 当前Unix时间戳以毫秒为单位。 19. `$nginx_version`: Nginx服务器的版本号。 20. `$pid`: 工作进程的进程ID。 21. `$pipe`: 如果请求是通过管道通信的,值为`p`,否则为空。 22. `$proxy_protocol_addr`: 当使用代理协议时,提供客户端的地址,无代理时为空。 23. `$realpath_root`: 表示当前请求的文档根目录或别名的实际路径,考虑了符号链接的解析。 24. `$remote_addr`: 客户端IP地址,用于识别请求来源。 25. `$remote_port`: 客户端使用的端口号。 26. `$remote_user`: 如果启用了HTTP基本认证,该变量存储认证的用户名。 27. `$request`: 包含完整的HTTP请求行,即`METHOD URL HTTP/VERSION`。 这些预定义变量使得Nginx配置文件能够根据请求的具体情况动态响应,例如重定向、缓存控制、访问限制、日志记录等功能。灵活使用这些变量是构建高效、可扩展的Nginx配置的关键。