在Nginx中,全局变量是Nginx配置中非常有用的特性,它们允许你在不同的上下文中(如server块、location块、if语句等)引用Nginx服务器的状态信息、连接信息、请求信息等。这些变量通常在配置文件的指令中使用,用于条件判断、日志记录、重写规则等场景。
以下是一些常用的Nginx全局变量的小结:
1. **$host**:请求中的主机头字段,即`Host`请求头,如果请求中没有`Host`头,则默认为服务器名。
2. **$server_name**:当前请求的server块中server_name指令的值。
3. **$server_addr**:服务器的IP地址(注意,这通常是监听地址,不一定是客户端连接的IP地址)。
4. **$server_port**:请求到达服务器的端口号。
5. **$remote_addr**:客户端的IP地址。
6. **$remote_port**:客户端的端口号。
7. **$request_uri**:请求的URI,包含参数(由`?`分隔的部分)。
8. **$request_filename**:当前请求映射到的本地文件系统的文件路径,由root或alias指令和URI请求行生成。
9. **$document_uri**:与$request_uri相同。
10. **$document_root**:当前请求的根目录或别名目录的绝对路径。
11. **$args**:请求中的参数字符串,由`?`引导,如果有多个参数,则由`&`连接。
12. **$query_string**:与$args相同。
13. **$scheme**:请求使用的协议,如`http`或`https`。
14. **$is_args**:如果请求中有参数,则值为`?`,否则为空字符串。
15. **$uri**:请求的URI,不包含查询参数(即`?`后面的部分)。
16. **$limit_rate**:如果设置了限速,则该变量包含以字节/秒为单位的当前连接速率限制。
17. **$connection**:连接序列号。
18. **$connection_requests**:当前通过该连接发出的请求数。
19. **$connection_log_level**:日志级别,控制连接相关日志的详细程度。
20. **$http_user_agent**:客户端发送的`User-Agent`请求头。
21. **$http_referer**:引用页面的地址,即`Referer`请求头。
这些变量在Nginx配置文件中非常有用,可以帮助你实现复杂的逻辑判断、优化日志记录、提升安全性等。请注意,上述变量列表并不是全部Nginx全局变量的完整列表,Nginx还提供了许多其他变量,你可以根据具体需求查阅Nginx官方文档。