我需要在 access_log 中记录请求/响应大小(主体+标头)。知道如何在 nginx 中执行此操作吗?在 apache 中,我们可以使用 %I..%O 执行此操作...
答案1
我将在 nginx.conf 中使用这两个参数:
log_format perf'$remote_addr $status - $request_length $bytes_sent'
根据文献 (http://wiki.nginx.org/HttpLogModule)$request_length
只是请求的主体,但我已经确认它包含所有标头(我有一些 GET 请求,其中包含大量 cookie,总共超过 1400 个字节)。是发送到客户端的总字节数(与与 apache %B 兼容的$bytes_sent
相反)。$body_bytes_sent
答案2
$bytes_sent
:发送给客户端的字节数
$connection
:连接序列号
$connection_requests
:当前通过连接发出的请求数(1.1.18)
$msec
:日志写入时的时间(以秒为单位,精度为毫秒)
$pipe
:如果请求是流水线式的,则为“p”,否则为“.”
$request_length
:请求长度(包括请求行、请求头、请求体)
$request_time
:请求处理时间(以秒为单位,精度为毫秒);从客户端读取第一个字节到将最后一个字节发送到客户端后写入日志所用的时间
$status
:响应状态
$time_iso8601
:ISO 8601标准格式的当地时间
$time_local
:通用日志格式中的本地时间
答案3
$请求长度:
请求长度(包括请求行、请求头、请求体)
$bytes_sent:
响应长度(包括标头和正文)
$body_bytes_sent:
响应长度仅包括正文。