12.11 Nginx日志切割
12.12 静态文件不记录日志和过期时间
Nginx访问日志
1.首先我们进入cat /usr/local/nginx/conf/nginx.conf 里面 下图是定义格式//这里log_format 我定义了etc(可以随意定义)
相对应参数意义
2.然后再配置文件添加配置
vim /usr/local/nginx/conf/vhost/test.conf
添加:
access_log /nginx_log/nginx.log etc;
定义日志存放路径, 后面跟格式名就是刚才在nginx.conf里面定义的log_format ,不定义会默认日志格式
3./usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
4.测试
curl -I -x127.0.0.1:80 test1.com
查看日志:
cat /nginx_log/nginx.log //可以下图相对应的就是nginx.conf设置的格式
Nginx日志切割:
要想切割nginx日志需要借助系统的切割工具或者自定义脚本
下面示例自定义脚本切割+任务计划实现
1. 创建一个脚本文件 //脚本最好都放在/usr/local/sbin下
vim /usr/sbin/nginx_log_rotate.sh
- #! /bin/bash
d=`date -d "-1 day" +%Y%m%d` //定义变量
logdir="/nginx_log/" //指定日志切割路径
nginx_pid="/usr/local/nginx/logs/nginx.pid" //指定pid
cd $logdir
for log in `ls *.log`
do
mv $log $log-$d //把原先的日志做个改名
done
/bin/kill -HUP `cat $nginx_pid`
2. 运行脚本 //加个-x查看过程
sh -x /usr/sbin/nginx_log_rotate.sh
3.查看日志有没有生效
cd /nginx_log | ls
4.指定任务计划
0 0 * * * /bin/bash /usr/sbin/nginx/nginx_log_rotate.sh 每天凌晨运行此脚本
静态文件不记录日志和过期时间
1.在虚拟主机配置文件添加以下配置:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ //匹配
{
expires 7d; //缓存时间
access_log off;
}
location ~ .*\.(js|css)$
{
expires 12h;
access_log off;
}
2. /usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
3. curl -x127.0.0.1:80 test.com/1.jpg 可以看到以下图没记录,当我输入jpgass就有记录了,证明生效
4.curl -x127.0.0.1:80 test.com/1.jpg -I // 查询缓存时间 max-age=604800 等于7天也生效了