赋料扬雄敌,诗看子建亲。这篇文章主要讲述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
【Nginx 日志格式】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 设置
会记录每一级请求中信息
推荐阅读
- 基于消息队列(RabbitMQ)实现延迟任务
- 怎么通俗的理解Netty呢()
- oauth2.0授权码模式详解
- 详细了解 Synchronized 锁升级过程
- Linux系列(VMWare设置共享文件夹)
- #yyds干货盘点# 解决华为机试(杨辉三角的变形)
- Nginx的负载均衡(调度算法)及容错处理
- Linux系列(systemctl/service redhat6 redhat7区别)
- FPGA设计实用分享02 之 XILINX的可参数化FIFO