Nginx 日志格式
Posted chenglei1208
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx 日志格式相关的知识,希望对你有一定的参考价值。
前言.HTTP请求
nginx作为webserver和http的代理,处理的就是http请求。
http请求是是建立在tcp基础上的。
一个完整的http请求包括request和response两部分。
request组成:请求行,请求头,请求数据
response组成:状态行,消息报头,响应正文
我们可以在命令行查看一个完整的http请求 在linux服务器上执行以下:
curl -v http://www.baidu.com > /dev/null
大于号部分是请求部分,小于号部分是响应部分
一.Nginx日志格式(两个参数控制)
1.log_format #用来定义记录日志的格式 (可以定义多种日志格式,取不同的名字)
log_format log_name string(不同的字段)
2.accecc.log #用来指定日志文件的路径及使用的何种日志格式记录日志
access_log logs/access.log main;
二.Nginx日志类型
包括:error.log 和 access_log
error.log 主要是处理http请求错误和nginx本身服务错误状态,按照不同的错误级别记录
access_log 主要是记录处理每次http请求访问的状态
日志主要实现方式是使用 log_format
nginx记录的每次信息都可以当做一个变量,log_format就是将这些变量组合起来,记录到日志中去
#我们看一下log_format的配置#
Syntax: log_format name [escape=default|json] string …;
Default: log_format combined "...";
Context: http (约束log_format的配置位置)
#我们看一下默认的log_format#
log_format main $remote_addr - $remote_user [$time_local] "$request"
$status $body_bytes_sent "$http_referer"
"$http_user_agent" "$http_x_forwarded_for";
access_log /var/log/nginx/access.log main;
##默认的格式,基本都是单引号 包裹着一些变量,还包括 中划线 - 方括号 [] 作为分隔符一起打印。每个变量含义如下#
remote_addr:对应客户端的地址
remote_user:是请求客户端请求认证的用户名,如果没有开启认证模块的话是值为空。
time_local:表示访问时间与时区
request:表示用户的http请求起始行信息
status:表示response的返回状态 http状态码 记录请求返回的状态码例如(200 301 404等)
body_bytes_sent:表示从服务端返回给客户端的body数据大小(字节数)
http_referer:表示请求的上一级页面
(记录请求时从哪个连接访问过来的 可以根据此参数进行防盗链)
http_user_agent:表示agent信息 (记录客户端访问的信息 例如:浏览器 手机客户端等)
http_x_forwarded_for:当前端有代理服务器时 设置WEB节点记录客户端地址的配置
此参数生效前提是代理服务器也要进行相关的x_forwarded_for 设置 会记录每一级请求中信息
以上是关于Nginx 日志格式的主要内容,如果未能解决你的问题,请参考以下文章