1. 前言

  在 Nginx 服务器中,如果想对日志输出进行控制还是很容易的。Nginx 服务器提供了一个 HttpLogModule 模块,可以通过它来设置日志的输出格式。

2. HttpLogModule 模块

2.1 示例

2.2 指令

指令名称:access_log

语法:access_log [format [buffer=size] ] | off

默认值:access_log logs/access.log combined;

使用环境:http, server, location, if in location, limit_except

指令名称:log_format

语法:log_format name [escape=default|json|none] string ...;

默认值:log_format combined "...";

使用环境:http

Nginx 日志格式中,有很多参数,总结如下:

参数                        说明                                            示例
$remote_addr                客户端地址                                        14.116.133.170
$remote_user                客户端用户名称                                    --
$time_local                    访问时间和时区                                    03/Mar/2019:16:43:53 +0800
$request                    请求的URI和HTTP协议                                "GET /city/static/js/illegals/vehicle-search.js HTTP/1.1"
$http_host                    请求地址,即浏览器中你输入的地址(IP或域名)    www.super.com 192.168.118.15
$status                        HTTP请求状态                                    200
$upstream_status            upstream状态                                    200
$body_bytes_sent            发送给客户端文件内容大小                        1547
$http_referer                url跳转来源                                        https://www.baidu.com/
$http_user_agent            用户终端浏览器等信息                            Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0
$ssl_protocol                SSL协议版本                                        TLSv1
$ssl_cipher                    交换数据中的算法                                RC4-SHA
$upstream_addr                后台upstream的地址,即真正提供服务的主机地址    192.168.118.16:8080
$request_time                整个请求的总时间                                0.205
$upstream_response_time        请求过程中,upstream响应时间                    0.002

Nginx日志格式参数

指令名称:open_log_file_cache

语法:open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time]; | open_log_file_cache off;

默认值:open_log_file_cache off;

使用环境:http、server、location

max - 该选项用来设置在缓存中可以存储的最大文件描述符数量。它通过最近最少使用(LRU)算法来移除缓存条目
inactive - 该选项用来设置一个时间间隔。在这个时间间隔之后,没有被命中的文件描述符将会被移除,默认值是10秒
min_uses - 该选项用来设置访问次数。在一定时间间隔内,一个文件描述符至少被访问多少次后就可以将该文件描述符放在缓存中,默认为 1,即访问一次便缓存
valid - 该选项用于设置检查同名文件存在的时间,默认为60秒
off - 关闭缓存示例:
open_log_file_cache max=1000 inactive=20s min_uses=2 valid=1m;

2.3 测试

首先,查看下 nginx 默认的日志格式:

测试访问,查看日志:

注意:这里有两个 '- -'    第一个 '-' 是 log_format 中定义的,第二个 '-' 是 $remote_user 变量为null时,返回的占位符。

这些变量通过上面表对比就能明白。
默认的日志格式可能不满足我们日常问题的排查,可以自行定义,这里通过是否需要转发后端服务器来分为 2类进行定义日志格式:

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$request_time"';log_format  remote_main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for" "$request_time" "$upstream_response_time" "$upstream_addr" "$upstream_status"';

为了能够尽快的通过日志查询到异常情况,这里建议取消 http 段的全局定义日志,改为每个location 中定义一个日志文件。这样除了异常,可以快速定位。

access_log xxx buffer = 32k flush =5s;

这里非常有必要说一下,如果这样设置了,日志是不会实时刷新的,buffer 满 32k 才写盘;假如 buffer 不满 5s 钟后强制写盘。

最后,别忘记加上日志缓存,有利于减少服务器资源消耗。

2.4 测试

通过访问:
curl http://10.0.10.158/  返回的日志查看

最后一位是 $request_time 整个请求的总时间,我们这里只是很短的字符串测试,所以很快就处理完成。记录为 0.000

curl http://10.0.10.158/apache/index.html

通过这样一条日志,能够很清晰的看出来:

用户请求访问的uri:GET /apache/index.html

整个请求总耗时:0.002

后端处理耗时:0.002

后端处理请求主机socket:"10.0.10.159:8080"

后端处理返回状态:200

转载于:https://www.cnblogs.com/hukey/p/10502346.html

Nginx - 日志格式及输出相关推荐

  1. nginx日志格式分析及修改

    修改nginx日志打印格式 一. 打开终端,登录服务器并输入服务器密码 //ssh 用户名@服务器ip ssh root@192.168.0.132 二. 切换到nginx目录 cd /var/log ...

  2. Nginx日志格式设置

    2019独角兽企业重金招聘Python工程师标准>>> nginx 服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log,用来指 ...

  3. nginx日志格式、参数及切分

    2019独角兽企业重金招聘Python工程师标准>>> 日志格式 nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是access_log ...

  4. nginx 日志格式设置 和 负载均衡下 获取真实ip

    log_format log 格式   '配置规则'; 日志格式设置: $remote_addr与$http_x_forwarded_for用以记录客户端的ip地址: $remote_user:用来记 ...

  5. nginx日志格式分析

    先随便截取一个nginx标准日志: 62.173.145.171 - - [12/Jan/2020:17:23:54 +0800] "GET /vvx/000000000000.cfg HT ...

  6. nginx日志格式配置

    nginx作为我们IT中的首选反向代理神器,有时候我们有必要查看nginx中的日志的,但是我们对nginx的日志格式不是很了解怎么办呢?这样以来也是看不懂的. nginx日志 nginx的日志分两种一 ...

  7. nginx日志格式及自定义日志配置

    1.nginx的log日志分为access log 和 error log 其中access log 记录了哪些用户,哪些页面以及用户浏览器.ip和其他的访问信息:error log 则是记录服务器错 ...

  8. Nginx日志格式配置-转载

    最近项目使用到了nginx的反向代理,配置过程中查询了一些nginx日志配置的问题,便于自己学习查询 nginx服务器日志相关指令主要有两条,一条是log_format,用来设置日志格式,另外一条是a ...

  9. Nginx日志格式说明

    1.日志位置及配置 默认位置在nginx安装目录下的:logs/access.log 也可修改日志配置,在配置文件中:conf/nginx.conf 日志格式参数:log_format #log_fo ...

最新文章

  1. ML之SVM(三种):基于三种SVM(linearSVR、polySVR、RBFSVR)对Boston(波士顿房价)数据集(506,13+1)进行价格回归预测并对比各自性能
  2. Ruby中的%表示法
  3. 持久化雪花视图实例学习
  4. MySql单表的curd-02
  5. 版式之美!左右布局图文排版设计灵感
  6. 全国计算机一级考试网络知识,全国计算机等级考试一级网络基础知识复习题及答案.doc...
  7. gitlab创建分支上传文件_环境搭建:gitLab平台的搭建和简单使用
  8. Java旅游网站源码+页面
  9. Windows中如何对电脑硬盘进行分区
  10. 数据结构 WSADATA
  11. 渗透实战(周三):Ettercap·ARP毒化MITM中间人攻击
  12. 百度地图自定义图标偏移问题
  13. 酷客scrm发布:陌生人扫码进群原来是这么回事
  14. 【论文学习】STN —— Spatial Transformer Networks
  15. 【微信小程序】-- 使用 npm 包 - API Promise化(四十二)
  16. 短视频如何做好引流与推广,分享四个快速涨粉方案
  17. 文件服务器怎么限制速度,文件服务器的速度
  18. 《老母鸡汤》送给正在坚持在路上的你
  19. vue3 关于子组件给父组件传值,详解
  20. 宝藏又小众的动漫壁纸素材网站分享

热门文章

  1. 4.8地铁查询开发进度
  2. LuoguP2292 L语言
  3. GradSearchCv 自定义验证集
  4. Guava Cache探索及spring项目整合GuavaCache实例
  5. Ctrl+Alt+F1~F6
  6. 【杂题集】单题小总结
  7. android support Percent支持库开发
  8. XXX 不是当前用户的有效责任,请联系您的系统管理员
  9. Hardcoded string 下一步, should use @string resource警告 (转载)
  10. dmalloc用法快速入门