日志模块
ngx_http_log_module
实例 1 压缩日志
log_format gzip '$remote_addr - $remote_user [$time_local] '
: '"$request" $status $bytes_sent '
: '"$http_referer" "$http_user_agent" "$gzip_ratio"';
access_log /spool/logs/nginx-access.log gzip buffer=32k;
这个是对日志进行压缩,但是首相要开启gzip的压缩功能。
实例 2 普通日志
server {
root /spool/vhost/data/$host;
access_log /spool/vhost/logs/$host;
针对单个站点进行的日志配置。
实例 3 combined日志
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
可以向apache那样产生日志。
实例 4 不知道
open_log_file_cache max=1000 inactive=20s valid=1m min_uses=2;
从字面理解好性可以打开缓存日志,但是官方是俄文的,实在看不懂,这个日志格式可以研究一下。
虽然nginx非常好,但是Nginx目前就还不支持通过pipe输出log,所以就不支持利用cronolog来按时间进行日志截断回滚。
如果要截断日志,每天来分析,就要通过第三方的方法来做。
下面提供一种替代解决方案,来达到日志回滚的效果:
#!/bin/sh
log_dir=”/backup/log/nginx/”
yesterday=`date +%Y%m%d`
lastday =`date +%Y%m%d -d ‘-1 month’`
/bin/rm ${log_dir}/access.log.${lastday}
/bin/rm ${log_dir}/error.log.${lastday}
/bin/mv ${log_dir}/access.log ${log_dir}/access.log.${yesterday}
/bin/mv ${log_dir}/error.log ${log_dir}/error.log.${yesterday}
kill -USR1 `cat /usr/local/nginx/nginx.pid`
/bin/gzip ${log_dir}/access.log.${yesterday} &
/bin/gzip ${log_dir}/error.log.${yesterday} &
然后将该脚本保存在/usr/local/bin/cron.daily目录里,或者在crontab里每日0点时运行。
我规定了日志格式为access.log.yyyymmdd,如果日志文件够大,可以采用压缩日志gzip.
#这里使用了通信
说到通信,我再介绍一下linux和nginx的通信机制.
Nginx 支持下表中的信号:
信号名 作用描述
TERM, INT 快速关闭程序,中止当前正在处理的请求
QUIT 处理完当前请求后,关闭程序
HUP 重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求
USR1 重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件
USR2 平滑升级可执行程序
WINCH 从容关闭工作进程
有两种方式来通过这些信号去控制 Nginx,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill - XXX
来控制 Nginx,其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall - s HUP nginx 来让 Nginx 重新加载配置。
阅读(2369) | 评论(0) | 转发(0) |