一.Nginx日志目录简介
- nginx的产生的相关的日志默认是在
/usr/local/nginx/logs
的目录里面。
日志目录下文件的介绍
- access.log:该日志文件是用来记录客户在访问该nginx时产生的每一个请求,格式可以自定义,通过访问日志就可以得到用户地域来源跳转来源,使用终端,某个URL访问等相关信息。
- error.log:错误日志,主要是记录客户端访问Nginx错误时产生的日志,格式不支持自定义,通过错误日志。可以得到系统的某个服务或者server的性能瓶颈。因此将错误日志好好利用,可以得到很多有价值的信息。
- nginx.pid:该日志文件主要是用来记录nginx的master进程的pid,当nginx服务启动时,会自动在该目录下生成该进程的pid文件。
注意:日志的开关在Nginx的配置文件nginx.conf
文件中设置,产生的日志都是可以选择性关闭的,但是默认是打开的。
日志格式介绍
- 默认格式的具体意思:
log_format main '
$remote_addr(远程IP)
$remote_user(远程用户)
[$time_local](访问时间)
$request"(请求方式) '
$status(状态302、404、401、403等)
$body_bytes_sent(请求体 body 长度等)
$http_referer"(referer来源信息)
$http_user_agent(用户代理)"
$http_x_forwarded_for(被转发的请求的原始IP)"';
注意:(1)http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP(2)日志的格式我们也可以自己定义。
我们来具体看一下日志记录的信息:
二.日志及其日志备份
日志的自动生成
- 默认的在每次启动nginx服务的时候,都会在/usr/local/nginx/los目录下生成access.log日志,在每次对服务reopen重新打开时也会在nginx重新生成access.log日志文件。
验证如下:
实现在每日凌晨自动备份Nginx产生的日志
- 编写脚本,实现在每日凌晨自动备份Nginx产生的日志:
- 编写脚本实现nginx日志的自动备份,脚本内容如下:
[root@server1 logs]# vim backup.sh
#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs/oldlogs
CUR_LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date +%F -d -1day)
mv $CUR_LOGS_PATH/access.log $LOGS_PATH/${YESTERDAY}_access.log
mv $CUR_LOGS_PATH/error.log $LOGS_PATH/${YESTERDAY}_error.log
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
[root@server1 logs]# chmod +x backup.sh
执行效果如下:
- 我们还可以这样实现:
#!/bin/bash
LOGS_PATH=/usr/local/nginx/logs/oldlogs
CUR_LOGS_PATH=/usr/local/nginx/logs
YESTERDAY=$(date +%F -d -2day)
mv $CUR_LOGS_PATH/access.log $LOGS_PATH/${YESTERDAY}_access.log
mv $CUR_LOGS_PATH/error.log $LOGS_PATH/${YESTERDAY}_error.log
#kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)
/usr/local/nginx/sbin/nginx -s reopen
执行效果如下:
- 添加定时命令文件实现每天凌晨的nginx服务的自动备份。
[root@server1 logs]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@server1 logs]# crontab -l
0 0 1 * * /bin/bash /usr/local/nginx/logs/backup.sh