您的位置:首页 > 运维架构 > Nginx

【LNMP】Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间

2018-01-04 17:14 1181 查看
一、 Nginx访问日志

 日志格式

搜索log_format:

 vim /usr/local/nginx/conf/nginx.conf 



各个段的意思:



除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加内容。

先进入目录:

/usr/local/nginx/conf/vhost



编辑test.com.conf虚拟主机配置文件,并增加以下内容:

vim test.com.conf

 access_log /tmp/test.com.log amo;



 这里的combined_realip就是在nginx.conf中定义的日志格式名字,我们改为amo

检测结果并重新加载:

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload 



再来测试一下结果:

 curl -x127.0.0.1:80 test.com -I 

curl -x127.0.0.1:80 test.com/admin/index.html/adfsadf -I  (随便curl一个测试)

然后再查看日志:

 cat /tmp/test.com.log



二、 Nginx日志切割

 自定义shell 脚本并写入如下内容:

 vim /usr/local/sbin/nginx_log_rotate.sh

#! /bin/bash

## 假设nginx的日志存放路径为 /data/logs/      

d=`date -d "-1 day" +%Y%m%d` 

logdir="/tmp/"

nginx_pid="/usr/local/nginx/logs/nginx.pid"

cd $logdir

for log in `ls *.log`

do

    mv $log $log-$d

done

/bin/kill -HUP `cat $nginx_pid`



然后执行一下:

sh -x  /usr/local/sbin/nginx_log_rotate.sh      (sh -x 可视化)



查看一下/tmp目录:



 写完脚本之后还要加一个任务计划crontab -e

每天凌晨0点执行一下这个脚本:

 0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh



定期删除日志:

find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm 

(找出30天前名字为log-*后缀的日志并删除)

三、 静态文件不记录日志和过期时间

编辑test.com.conf 并且配置如下:

vim test.com.conf

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

    {

          expires      7d;

          access_log off;

    }

location ~ .*\.(js|css)$

    {

          expires      12h;

          access_log off;

    }



再检测并重新加载一下:

/usr/local/nginx/sbin/nginx -t

/usr/local/nginx/sbin/nginx -s reload



最后来测试一下:

进入目录并创建1.gif  和2.js 后缀的文件



再curl看一下状态结果并查看日志确认(gif和js的没有日志记录):



再来测试一下过期时间:

先curl一下,因为之前有定义过期expires 12h,所以状态中有这个max-age

curl -x127.0.0.1:80 -I  test.com/2.js



我们再去修改一下脚本文件:

vim /usr/local/nginx/conf/vhost/test.com.conf

将定义js模块的 expires 12h 注释掉



检测并重新加载:



再curl查看一下状态:



发现没有了Cache-Control: max-age=43200 这一行的状态,这个是因为过期时间我们没有定义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐