这段nginx.conf 中的日志配置,其中每个变量的作用都知道吗?
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
这段 Nginx 配置定义了一个名为 combined
的日志格式,它是 Nginx 默认的日志格式之一,广泛用于记录 HTTP 请求的详细信息。
各字段含义
-
$remote_addr
- 作用:客户端的 IP 地址(如
192.168.1.1
)。 - 用途:追踪请求来源,分析访问量分布。
- 作用:客户端的 IP 地址(如
-
-
- 作用:占位符,当
$remote_user
为空时显示。
- 作用:占位符,当
-
$remote_user
- 作用:客户端认证的用户名(如使用 Basic Auth)。
- 示例:若用户通过认证,显示为
username
;否则为空。
-
[$time_local]
- 作用:请求处理完成的本地时间,格式为
DD/MMM/YYYY:HH:MM:SS + timezone
。 - 示例:
[01/Jan/2023:12:34:56 +0800]
。
- 作用:请求处理完成的本地时间,格式为
-
"$request"
- 作用:完整的 HTTP 请求行,包含 方法、URI 和 协议版本。
- 示例:
"GET /index.html HTTP/1.1"
。
-
$status
- 作用:HTTP 响应状态码(如
200
、404
、500
)。 - 用途:监控服务器健康状态,分析错误原因。
- 作用:HTTP 响应状态码(如
-
$body_bytes_sent
- 作用:发送给客户端的响应体大小(单位:字节),不包含响应头。
- 示例:若响应是一个 10KB 的图片,显示为
10240
。
-
"$http_referer"
- 作用:客户端请求的来源页面 URL(即用户从哪个页面跳转过来的)。
- 示例:
"https://google.com/search?q=example"
。 - 注意:若直接访问(无来源),显示为
"-"
。
-
"$http_user_agent"
- 作用:客户端的 User-Agent 字符串,包含浏览器 / 设备信息。
- 示例:
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36"
。
实际日志示例
192.168.1.1 - - [01/Jan/2023:12:34:56 +0800] "GET /index.html HTTP/1.1" 200 1234 "https://google.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
192.168.1.1 - - [01/Jan/2023:12:34:56 +0800] "GET /index.html HTTP/1.1" 200 1234 "https://google.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
这是根据日志配置,日志记录的客户端访问服务器的信息。
那你能把每个信息与配置中的变量对应起来吗?