> 健康
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;;...}
示例日志收集:
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;;
说明:此文档仅用于记录参考,不做其他用途