外观
Nginx 变量
在上方的实例中,以及下方的防盗链示例中,使用到了单词前面加 $ 符号的语法,这实际上是 Nginx 提供的变量语法。
Nginx 提供了多种全局变量,可以在配置文件中使用。这些全局变量通常用于获取请求的相关信息,进行条件判断、访问控制等。
- 请求相关变量
$arg_<name>:获取请求 URL 中的查询参数值。例如,$arg_id获取 URL 中?id=xxx的值。$body_bytes_sent:响应正文的字节数,不包括响应头。$remote_addr:客户端的 IP 地址。$remote_port:客户端连接的端口号。$remote_user:HTTP 请求头中的Authorization用户名。$request_method:HTTP 请求的方法(如GET,POST等)。$request_uri:原始请求的 URI(包括查询参数)。$query_string:请求 URL 中的查询字符串部分(不包括?)。$uri:去掉查询参数后的 URI 部分。$document_uri:请求的 URI,与$uri相同。$scheme:请求的协议(如http或https)。$host:请求中的Host头部。$http_<header>:请求头中的字段,例如$http_user_agent用于获取User-Agent头部的值,$http_referer用于获取Referer头部的值。
2. 响应相关变量
$status:响应的 HTTP 状态码。$sent_http_<header>:响应头中的字段。例如,$sent_http_content_type获取响应的Content-Type。$response_time:生成响应的时间(秒)。$upstream_response_time:上游服务器响应的时间(秒)。$upstream_cache_status:上游缓存状态(如HIT或MISS)。$body_bytes_sent:响应主体的字节数(不包括头部)。
3. 服务器相关变量
$server_addr:服务器的 IP 地址。$server_name:当前请求的服务器名称。$server_port:服务器监听的端口号。
4. 位置相关变量
$document_root:当前请求的根目录路径。$realpath_root:实际文件系统的根路径(如果不同)。$root:当前请求配置的根目录路径。
5. 连接相关变量
$connection:当前连接的唯一标识符。$connection_requests:当前连接的请求次数。$ssl_cipher:用于加密的 SSL/TLS 密码套件。$ssl_protocol:SSL/TLS 协议版本。
6. Nginx 内部处理相关变量
$nginx_version:Nginx 的版本号。$pid:Nginx 的进程 ID。$hostname:服务器的主机名。
7. 文件相关变量
$document_root:指向当前请求的文件系统根目录路径。$filename:当前请求对应的文件的路径。
8. 日志相关变量
$log_file:Nginx 配置中定义的日志文件路径。$log_format:日志格式。
9. 时间和日期变量
$time_local:本地时间,格式为DD/Mon/YYYY:HH:MM:SS +0000。$msec:当前时间的秒级别时间戳(带小数部分)。$epoch_time:当前时间的 Unix 时间戳(秒)。
10. 请求体和代理相关变量
$request_time:处理请求的时间。$upstream_addr:上游服务器的地址。$upstream_status:上游服务器的响应状态。$proxy_protocol_addr:通过PROXY协议传递的远程地址。
11. 代理和负载均衡相关变量
$upstream_addr:上游服务器的 IP 地址和端口。$upstream_status:上游服务器返回的状态码。$upstream_response_time:上游服务器的响应时间。
12. 自定义变量
Nginx 允许用户定义和使用自定义变量。自定义变量通常是在配置文件中使用 set 指令来设置的。例如:
set $my_var "value";然后可以在其他配置中使用 $my_var 变量。