主机迷主机迷

Nginx如何自定义access.log日志格式

Nginx使用log_format设置日志的格式,access.log默认的格式

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent"';

我一般使用的格式

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

log_format要放到http段里面,并且要放到server段的外部,否则重启nginx时会报一个类似nginx: [emerg] "log_format" directive is not allowed here的错误,至少我使用的nginx 1.14版本就是如此。
设置access.log的存放路径,默认格式为main,此配置可放到server段。

access_log /var/log/nginx/access.log main;

各个变量的含义:
$scheme 请求的协议,http或https
$host 访问域名
$remote_user 远程客户端的用户名称,basic认证用户,没有时为“-”
$remote_addr 客户端IP地址
$time_local 访问时间和时区
$request 请求方法、请求uri和请求http协议
$status 响应状态码
$upstream_status upstream状态
$upstream_response_time 请求时upstream的响应时间
$request_time 整个请求的总时间,包括从读取客户端第一个字节到响应完成并写完日志的全部时间
$bytes_sent 返回给客户端大小
$body_bytes_sent 返回给客户端的body大小
$http_referer 请求来源
$http_user_agent 用户终端浏览器的UserAgent
$http_x_forwarded_for 通过代理服务器来记录的客户端的ip地址

转载请注明出处 | 当前页面:主机迷 » Nginx如何自定义access.log日志格式

评论

  • 请输入 5 + 7 = ? 的计算结果: