说明:这是'nginx' 11个阶段的'最后'一个阶段
理想: nginx如果能记录最终'匹配的location'和'server_name'就好了
现实的情况: 往往需要根据'Host'头、$proxy_pass、$request '综合'判断 -->由于'内部重定向'
1)path 了解
语法:access_log syslog:server=address[,parameter=value] [format];
特点:可以将nginx日志'直接传输'到logstash中而'不落盘',但是这种方法传输的日志'不可靠',并且会对nginx产生'性能'影响,可以在'测试'的时候使用
2)buffer和gzip 了解
细节点: 打开gzip的时候,默认已经'开启'buffer了
3)if 掌握
1)日志'格式'应该使用'哪些'变量才能帮助'运维人员快速定位'问题 -->'运维'
2)日志格式'包含哪些信息'来方便我们'提取有效'信息进行全局分析 -->'反馈'
1)默认的日志格式
2)细节阶段
1)default定义'普通的文本'格式转义字符的处理规则 -->体会'default'和'json'转义规则的不同
2)json定义了 'json 格式字符串(单双引号)'中一些'非法字符的转义'规则 --> '1.11.8版本引入'
escape=json '{"realip":"$remote_addr","@timestamp":"$time_iso8601"}'; -->'外围单引号'
场景: nginx日志json化,方便在'es'中生成方便'检索的索引'
3) 日志格式'隐私'问题-->Cookie包含很多'隐私key和value',之记录通用能'识别用户身份'的即可
4)建议变量'使用' --> [$varable]的形式
5)关于'日志使用哪些变量'帮助我们'快速'判断问题,后续讲解
3) 日志显示l乱码(16进制)
1)在nginx'没有开启ssl支持'的情况下,nginx将https连接建立过程中的'客户端hello报文'当作http报文处理
2)暴力的'截取'了报文中指定位置的十六进制字符串当作了$request的http请求方法、URL和版本号
3)所以access日志中会出现'十六进制'字符串
③ open_log_file_cache 了解
二 补充
③ log_subrequest 重要