Nginx记录请求头/响应头到访问日志
记录请求头信息
比如下请求头部分信息:
accept: image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8
accept-encoding: gzip, deflate, br
accept-language: zh-CN,zh;q=0.9
cache-control: no-cache
user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36
在Nginx的access_log中记录ua信息,如下:
"user_agent": "$http_user_agent",
tips:
1. 获取请求头在字段前添加 $http_字段名
2. 字段名使用下划线分隔即使在页面展示的请求头是中划线, 比如: user-agent --> user_agent
记录响应头信息
网上搜索记录响应头的文章千篇一律全是写lua实现,我觉得侵入太大,于是在官方文档上找到了这种方式。
比如下响应头部分信息:
accept-ranges: bytes
access-control-allow-origin: *
cache-control: max-age=10368000
content-length: 122996
content-type: image/webp
date: Mon, 18 Apr 2022 02:36:34 GMT
last-modified: Thu, 23 Dec 2021 06:22:26 GMT
server: Lego Server
timing-allow-origin: *
x-cache-lookup: Cache Hit
x-nws-log-uuid: 6197134411751577255
在Nginx的access_log中记录content-type信息,如下:
"content_type": "$sent_http_content_type",
"content_length": "$sent_http_content_length",
tips:
1. 获取请求头在字段前添加 $sent_http_字段名
2. 字段名使用下划线分隔即使在页面展示的请求头是中划线, 比如: content-type --> content_type