1、错误日志配置 错误日志属于核心功能模块的参数
worker_processes 1; error_log /data/logs/nginx/error.log error; #一般配置这一行即可 events { worker_connections 1024; }
语法规则:error_log file level
错误的日志级别有[debug|info|notice|warn|error|crit|alert|emerg],级别越高,记录的信息越少,生产场景一般是warn|error|crit这三个级别之一
可以放置的标签段为:main,http,server,location
2、访问日志配置
①定义日志格式(放置的http标签内),在没有特殊要求的情况下,采用默认配置即可
log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';
②在每个虚拟主机配置应用
root@c1 ~]# cat /application/nginx/conf/vhost/www.heboan.com.conf server { listen 80; server_name www.heboan.com; location / { root /data/www/heboan; index index.html index.htm; } access_log /data/logs/nginx/www.heboan.com.log; #配置这一行即可 } #没有什么需求,建议在生产环境关闭访问日志 access_log off
3、访问日志的轮询切割
①创建轮询切割脚本
#vim /data/shell/nginx_cut_log.sh #!/bin/bash # LOGDIR=/data/logs/nginx LOGBKDIR=$LOGDIR/`date +%Y-%m` NGINX_SBIN=/application/nginx/sbin/nginx logrotate () { local I for I in `ls $LOGDIR`;do if [ -f $LOGDIR/$I ];then log_bkname=$LOGBKDIR/${I}_`date +%d`.gz log_file=$LOGDIR/$I cat $log_file|gzip >$log_bkname rm -f $I fi done ${NGINX_SBIN} -s reload } delempdir () { local I for I in $*;do IFEMPTY=`ls $I` [ "$IFEMPTY" == "" ] && rmdir $I done } #do the log rotating [ ! -d $LOGBKDIR ] && mkdir -p $LOGBKDIR logrotate #delete the outdated bakcup log files find $LOGDIR -name "*log*" -mtime +7 -exec rm -rf {} ; #delete the empty directory under $LOGDIR ALLBAKLOCATION=`find $LOGDIR -type d` delempdir $ALLBAKLOCATION
②通过定时任务每天00.01点准时执行/data/shell/nginx_cut_log.sh
[root@c1 ~]# crontab -l #cut nginx access log by heboan 01 00 * * * /usr/bin/bash /data/shell/nginx_cut_log.sh
4、不记录不需要的访问日志
在实际工作中,对负载均衡器健康节点检查或某些特定文件(比如图片、js、css)的日志,一般不需要记录下来,因为在统计pv时是按照页面计算的,而日志写入太频繁会消耗大量的I/0,降低服务的性能
具体配置方法如下:
location ~ .*.(js|png|JPG|jpeg|JPEG|css|bmp|gif|GIF)$ { access_log off; }
5、访问日志权限设置
加入日志目录为/app/logs,则授权方法如下:
chown -R root.root /app/logs chmod -R 700 /app/logs
不需要在日志目录上给nginx用户读或写许可,但很多网友都没注意这个问题,他们把该权限直接给了nginx或apache用户,这就成为了安全隐患。