Nginx日志轮转的最佳配置取决于你的具体需求和系统资源。以下是一个基本的配置示例,你可以根据自己的情况进行调整:
打开Nginx配置文件,通常位于/etc/nginx/nginx.conf或/etc/nginx/conf.d/default.conf。
在http块中添加或修改以下配置:
http {
# ...
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main buffer=32k flush=300s;
error_log /var/log/nginx/error.log warn buffer=32k flush=300s;
# ...
}
这个配置定义了一个名为main的日志格式,并将访问日志和错误日志分别存储在/var/log/nginx/access.log和/var/log/nginx/error.log文件中。buffer=32k表示日志缓冲区大小为32KB,flush=300s表示每300秒(5分钟)刷新一次日志缓冲区。这样可以减少磁盘I/O操作,提高性能。
为了实现日志轮转,你需要确保系统上已经安装了logrotate工具。在大多数Linux发行版中,logrotate已经预装。如果没有,请根据你的发行版进行安装。
创建一个新的logrotate配置文件,例如/etc/logrotate.d/nginx,并添加以下内容:
/var/log/nginx/*.log {
daily
missingok
rotate 7
compress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
这个配置文件指定了日志文件的路径(/var/log/nginx/*.log),并设置了以下选项:
daily:每天轮转日志文件。missingok:如果日志文件不存在,不会产生错误。rotate 7:保留7个轮转日志文件。compress:压缩旧的日志文件。notifempty:如果日志文件为空,不进行轮转。create 0640 www-data adm:创建新的日志文件,权限为0640,属主为www-data,属组为adm。sharedscripts:如果有多个日志文件,只执行一次postrotate脚本。postrotate:轮转日志后执行的脚本。这里发送一个USR1信号给Nginx进程,通知它重新打开日志文件。注意:这个配置示例仅作为参考,你可能需要根据自己的需求进行调整。例如,你可以根据服务器的磁盘空间和日志文件的大小来调整rotate和flush参数。