nginx中access_log记录日志是可以自定义格式的,通过自定义格式,一方面供我们更方便的查询请求,另外还可以做统计,接口访问速度分析等。
语法:
log_format name format [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"';
其中 main就是名称。
日志文件生成后每一行的内容大致如下:
172.20.0.139 - - [27/Aug/2020:03:00:24 +0000] "POST /api/goodsReturn/pushUpdateGoods HTTP/1.1" 200 17 "-" "okhttp/3.11.0"
作用域:
http,server
也就是说log_format的定义可以放在nginx配置文件中的server作用域中也可以放在http作用域中
字段介绍:
变量 | 说明 |
$time_local | 通用日志格式下的本地时间;(服务器时间) |
$remote_addr | 客户端(用户)IP地址 |
$status | 请求状态码,如200,404,301,302等 |
$body_bytes_sent | 发送给客户端的字节数,不包括响应头的大小 |
$bytes_sent | 发送给客户端的总字节数 |
$request_length | 请求的长度(包括请求行,请求头和请求正文) |
$request_time | 请求处理时间,单位为秒,小数的形式 |
$upstream_addr | 集群轮询地址 |
$upstream_response_time | 指从Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间 |
$remote_user | 用来记录客户端用户名称 |
$request | 请求方式(GET或者POST等)+URL(包含$request_method,$host,$request_uri) |
$http_user_agent | 用户浏览器标识 |
$http_host | 请求的url地址(目标url地址)的host |
$host | 等同于$http_host |
$http_referer | 来源页面,即从哪个页面转到本页,如果直接在浏览器输入网址来访问,则referer为空 |
$uri | 请求中的当前URI(不带请求参数,参数位于$args),不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。 |
$document_uri | 等同于$uri |
$request_uri | 比$uri多了参数,即$uri+$args |
$http_x_forwarded_for | 如果使用了代理,这个参数会记录代理服务器的ip和客户端的ip |
应用
按照上面的字段介绍,我们可以自己的需求来组装日志格式,方便与以后分析日志来获取信息,比如获取一下后端cgi程序处理最慢的接口有哪些,获取总体http请求时间平均值和慢请求(慢查询)。
最后附上nginx官方中文文档地址供大家查阅:https://www.nginx.cn/doc/