nginx日志解析

log_format定义日志格式语法

默认Nginx定义语法格式如下:

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

Nginx日志格式中常用的变量

$remote_addr:获取的是反向代理的IP地址。 反向代理服务器在转发请求的http头信息中,注:如果Nginx位于负载均衡器,nginx反向代理之后, web服务器无法直接获取到客户端真实的IP地址。
$remote_user:记录客户端用户名
$time_local:记录通用的本地时间
$time_iso8601:记录ISO8601标准格式下的本地时间
$request:记录请求的方法以及请求的http协议
$status :记录请求状态码(用于定位错误信息)
$body_bytes_sent :发送给客户端的资源字节数,不包括响应头的大小
$bytes_sent :发送给客户端的总字节数
$msec :日志写入时间。单位为秒,精度是毫秒。
$http_referer :记录从哪个页面链接访问过来的
$http_user_agent:记录客户端浏览器相关信息
$request_length:请求的长度(包括请求行, 请求头和请求正文)。
$request_time:请求花费的时间,单位为秒,精度毫秒
$http_x_forwarded_for:增加X-Forwarded-For信息,用来记录客户端IP地址和客户端请求的服务器地址。

真实的日志内容解析

10.0.0.1- - [05/Apr/2015:12:16:00 +0800] "GET / HTTP/1.1" 200 25 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36" "-"

对应说明:
$remote_addr:对应的真实日志里的10.0.0.100,即客户端的IP。
$remote_user:对应的是第二个中杠“-”,没有远程用户,所以用“-”填充。
[$time_local]对应的是:[05/Apr/2015:12:16:00 +0800]。
"$request"对应的是:"GET / HTTP/1.1"。
$status对应的是200状态码,200是正常访问。
$body_bytes_sent对应的是25字节,响应body的大小。
"$http_referer"对应的是"-",直接打开的域名浏览,因此,referer没有值。
"$http_user_agent"对应的是"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36"。
"$http_x_forwarded_for"对应的是"-",因为Web服务没有使用代理,因此此处为"-"。
posted @ 2025-08-14 17:31  阿峰博客站  阅读(20)  评论(0)    收藏  举报