1、与日志格式相关的内置变量
内置变量 | 含义 |
---|---|
$remote_addr | 客户端的IP地址 |
$remote_user | 客户端用户名,用于记录浏览者进行身份验证时的名称 |
$time_local | 访问的时间与时区 |
$request | 请求的URI和http协议 |
$status | 请求返回的http状态码 |
$body_bytes_sent | 发送给客户端的文件主体内容的大小 |
$http_referer | 来路URL地址 |
$http_user_agent | 浏览器信息 |
$http_x_forwarded_for | 客户端IP地址列表(包括中间经过的代理) |
2、设置访问日志内存缓冲区大小以及保存在内存缓冲区的最大时间
access_log logs/access.log mylog buffer=2k flush=5s;
3、若在访问过程中需要记录子请求的日志记录,则需将log_subrequest设置为on
4、关闭日志
关闭访问日志
access_log off;
关闭错误日志
error_log /dev/null;
5、日志文件切割
nginx的日志默认存储在access.log当中,全部日志存储在一个文件中自然是不方便用于运维和分析的,所以需要根据时间来进行日志文件切割,每天将前一天的日志按照时间来命名,保证不同时间的日志分开存放。为了偷懒,自然是采用定时任务的形式来操作了,具体过程如下: 首先是编写重命名的脚本文件/usr/local/nginx/autolog.sh
#!/bin/bash
#当前日志存放目录
logs_path="/usr/local/nginx/logs"
#备份日志文件
mv $logs_path/access.log $logs_path/access`date +"%Y%m%d"`.log
mv $logs_path/error.log $logs_path/error`date +"%Y%m%d"`.log
#重新打开nginx日志
/usr/local/nginx/sbin/nginx -s reopen
然后设置定时任务
crontab -e
0 0 * * * /usr/local/nginx/autolog.sh >/dev/null 2>&1
crontab -e 编辑页面参数说明
参数 | 说明 |
---|---|
第1个参数 | 分钟,0~59 |
第2个参数 | 小时,0~23 |
第3个参数 | 日,1~31 |
第4个参数 | 月,1~12 |
第5个参数 | 星期,0~6,0代表星期天 |
第6个参数 | 要运行的命令 |
>/dev/null 2>&1表示丢弃错误的信息,如果不写这个话,当脚本运行错误的时候,系统会将错误信息以邮件形式发给用户或者保存为/var/spool/mail/root文件。