为了排查线上的bug,需要在nginx的日志中,打印客户端上传上来的header头部信息,同时头部信息是自定义的。在尝试多重方案后,找到解决方法:
appkey是请求自定义header,在nignx中增加 ‘“referer”:"$http_referer",’,如下:
log_format json ‘{"@timestamp":“KaTeX parse error: Double superscript at position 35: … '̲"host":"server_addr”,’
‘“clientip”:“KaTeX parse error: Double superscript at position 34: … '̲"remote_user":"remote_user”,’
‘“request”:“KaTeX parse error: Double superscript at position 30: … '̲"referer":"http_referer”,’
‘“appkey”:"KaTeX parse error: Double superscript at position 34: … '̲"status":status}’;
打印日志如下:
{"@timestamp":"
2019-03-01T09:06:25+08:00",“host”:“10.40.4.190”,“clientip”:“10.40.32.113”,“remote_user”:"-"“url”:"/datacap/xxxx.do",“domain”:“10.40.4.190”,“xff”:"-",“referer”:"-",“appkey":"bff2fb01bdf9b13a23d67e50b687e473”,“status”
:200}
通过配置可以看出,可在自定义header字段前加http_,即可将指定的自定义header字段打印到log中。
要注意的是针对nginx 不同版本自定义header 获取方法不同,我的nginx版本是1.9.6