搜索
写经验 领红包
 > 健康

nginx 日志分析之 access.log 格式详解

导语:nginx 日志分析之 access.log 格式详解

说明:access.log 的格式是可以自己自定义,输出的信息格式在nginx.conf中设置

一般默认配置如下:

http {...    log_format  main  &34;$request&39;                      &34;$http_referer&39;                      &34;$http_user_agent&34;$http_x_forwarded_for&39;;...}

nginx 日志分析之 access.log 格式详解

示例日志收集:

39.107.234.70 - - [02/Feb/2023:11:18:29 +0800] &34; 200 109 &34; &34; &34;

日志参数详解:

$remote_addr 是离服务器“最近”的 IP。没有使用代理时,也就是客户端 IP。使用一层代理时,也就是代理的 IP。使用多层代理时,也就是最近一个(最靠近服务器)的代理的 IP。客户端IP 39.107.234.70$remote_user 客户端用户名称 - -$time_local 访问时间和时区 02/Feb/2023:11:18:29 +0800$request 请求的URL和http协议 POST /oauth/getJsapiToken HTTP/1.0$status http请求状态 200$body_bytes_sent 客户端发送文件内容大小 109$http_referer url跳转来源 &34;$http_user_agent 用户终端浏览器信息 &34;$http_x_forwarded_for 用以记录原有的客户端IP地址和原来客户端请求的服务器地址 &34;http_x_forwarded_for说明:假设将Nginx服务器作为Web服务器,位于负载均衡设备、Squid、Nginx反向代理之后,不能获取到客户端的真实IP地址了。 原因是经过反向代理后,由于在客户端和Web服务器之间增加了中间层,因此Web服务器无法直接拿到客户端的IP。 通过$remote_addr变量拿到的将是反向代理服务器的IP地址。 但是,反向代理服务器在转发请求的HTTP头信息中,可以增加X-Forwarded-For信息,用以记录原有的客户端IP地址和原来客户端请求的服务器地址。 这时候,要用log_format指令设置日志格式,让日志记录X-Forearded-For信息中的IP地址,即客户的真实IP。 

参考示例:

log_format access_json &34;@timestamp&34;$time_local&39;    &34;host&34;$server_addr&39;    &34;clientip&34;$remote_addr&39;    &34;size&39;    &34;responsetime&39;    &34;upstreamtime&34;$upstream_response_time&39;    &34;upstreamhost&34;$upstream_addr&39;    &34;http_host&34;$host&39;    &34;uri&34;$uri&39;    &34;domain&34;$host&39;    &34;x_forwarded_for&34;$http_x_forwarded_for&39;  //接收透传    &34;X-Real-IP&34;$remote_addr&39;    &34;referer&34;$http_referer&39;    &34;tcp_xff&34;$proxy_protocol_addr&39;    &34;http_user_agent&34;$http_user_agent&39;    &34;status&34;$status&39;; 

说明:此文档仅用于记录参考,不做其他用途