nginx配置文件详解----第一篇【访问与错误日志】

时间:2022-03-07 06:47:22

error_log错误日志    access_log访问日志

log_format指令

语法: log_format name string …;
默认值: log_format combined “…”;
配置段: http

name表示格式名称,string表示等义的格式。log_format有一个默认的无需设置的combined日志格式,相当于apache的combined日志格式,如下所示:

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

日志格式允许包含的变量注释如下:

  • $remote_addr, $http_x_forwarded_for 记录客户端IP地址
  • $remote_user 记录客户端用户名称
  • $request 记录请求的URL和HTTP协议
  • $status 记录请求状态
  • $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小; 该变量与Apache模块mod_log_config里的“%B”参数兼容。
  • $bytes_sent 发送给客户端的总字节数。
  • $connection 连接的序列号。
  • $connection_requests 当前通过一个连接获得的请求数量。
  • $msec 日志写入时间。单位为秒,精度是毫秒。
  • $pipe 如果请求是通过HTTP流水线(pipelined)发送,pipe值为“p”,否则为“.”。
  • $http_referer 记录从哪个页面链接访问过来的
  • $http_user_agent 记录客户端浏览器相关信息
  • $request_length 请求的长度(包括请求行,请求头和请求正文)。
  • $request_time 请求处理时间,单位为秒,精度毫秒; 从读入客户端的第一个字节开始,直到把最后一个字符发送给客户端后进行日志写入为止。
  • $time_iso8601 ISO8601标准格式下的本地时间。
  • $time_local 通用日志格式下的本地时间。

Nginx 日志分割
    #vim logs.sh
    #!/bin/bash
    #Nginx日志存放位置
   day=${logs}/sk_access.log$(date -d "yesterday" "+%Y_%m_%d")

mv ${logs}/sk_access.log ${day}

touch ${logs}/sk_access.log

/usr/local/nginx/sbin/nginx -s reload

:wq

nginx日志定期删除

# cat rm_logs.sh
#!/bin/bash
#
###########################
#定期删除七天前nginx的日志#
###########################
find /usr/local/nginx/logs/sk_access.log* -mtime +7 -type f -name sk_access.log\* |xargs rm -f
find /usr/local/nginx/logs/error.log* -mtime +7 -type f -name error.log\* |xargs rm -f

#创建计划任务
    #crontab -e
    0 0 * * * /bin/bash/logs.sh

0 0 * * * /bin/bash/rm_logs.sh