nginx日志的配置及切割

1.日志文件格式配置

(1)使用log_format指令进行配置文件格式

nginx的log_format可以自主选择参数用于指示服务器的活动状态,默认的是:

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

参数详解

假设将nginx服务器作为web服务器,位于负载均衡设备,nginx反向代理之后,不能获取到客户端的真实ip地址了。

原因是进过反向代理后,由于在客户端和web服务器之间增加了中间层,因此web服务器无法直接拿到客户端的ip。通过$remote_addr变量拿到的将是反向代理服务器的ip地址,但是,反向代理服务器在转发请求的http头信息中,可以增加X-Forwarded-For信息,用以记录原有的客户端ip地址和原来客户端请求的服务器地址。

(2)access_log指令

语法:access_log path [format [buffer=size [flush=time]]];

access_log path format gzip[=level] [buffer=size] [flush=time];

access_log off;

默认值:access_log logs/access.log combined;

配置段:

gzip压缩等级

buffer设置内存缓存区大小

flush保存在缓存去中的最长时间

不记录日志:access_log off;

使用默认combined格式记录日志:access_log logs/access.log 或access_log logs/access.log combined;

注意:nginx进程设置的用户和组必须对日志路径有创建文件的权限,否则报错。

此外,对于每一条日志记录,都将是先打来文件,再写入日志,然后关闭,可以使用open_log_file_cache来设置日志文件缓存(默认是off)。

日志配置demo

2.日志的切割

系统自动切割,利用linux操作系统的定时任务,执行sh脚本,来完成日志的自动切割。

(1)编写脚本

#!/bin/bash

LOGS_PATH=/usr/local/nginx/logs

YESTERDAY=$(date -d "yesterday" +%Y-%m-%d)

mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${YESTERDAY}.log

kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)  #向nginx主进程发送USR1信号,USR1信号是重新打开日志文件

(2)设置定时任务

# vi /etc/crontab

填写下面的命令:

0 0 * * * root /usr/local/nginx/logs/脚本名称

表示配置一个定时任务,定时每天00:00以root身份执行脚本/usr/local/nginx/logs/脚本名称,实现定时自动分割nginx日志。

你可能感兴趣的:(nginx日志的配置及切割)