6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)相关的知识,希望对你有一定的参考价值。
课程名称:12.10?nginx访问日志
笔记内容:
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
定义日志格式
combined_realip:日志格式名字,可以写任意,但是后面应用都要写这个
log_format ys ‘$remote_addr $http_x_forwarded_for [$time_local]‘
‘ $host "$request_uri" $status‘
‘ "$http_referer" "$http_user_agent"‘;
除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中增加
[[email protected] ~]# vim /usr/local/nginx/conf/vhost/test.com.conf
增加access_log /tmp/test.com.log ys;
检测加载
课程名称:12.11?Nginx日志切割
笔记内容:
Nginx没有自带的日志切割工具,借助系统自带可以使用系统logrotate命令切割日志的方法(自己扩展)
也可以自己写脚本(课程)
Shell脚本(所有的脚本放在/usr/local/sbin目录下)
创建[[email protected] ~]# vim /usr/local/sbin/nginx_log_rotate.sh
样例:
#! /bin/bash
/data/logs/ (假设nginx的日志存放路径)
d=date -d "-1 day" +%Y%m%d
(为了生成日期,年月日)
([[email protected] ~]# date -d "-1 day" +%Y%m%d
20180605 昨天的日期显示的命令 切割的日志一定是昨天的)
logdir="/data/logs" (日志路径)
nginx_pid="/usr/local/nginx/logs/nginx.pid"
(找PID 为了执行最下面/bin/kill -HUP cat $nginx_pid
这条命令)
cd $logdir (到日志路径下)
做循环
举例:
([[email protected] vhost]# for f in ‘ls ‘ ; do ls -l $f ; done
f代表文件(变量名字),in在哪里进行循环,ls则是显示出来,
这里就是在这两个文件中进行循环;ls这个目录下都有哪些文件每一个文件作为它一次循环的对象,第一次$f为aaa.com.conf,第二次$f为 test.com.conf,同理下面这个循环)
for log in ls *.log
(以log作为变量,ls查看有哪些log)
do
mv $log $log-$d (所有的log改下名字加上日期)
done
/bin/kill -HUP cat $nginx_pid
(此命令与 /usr/local/nginx/sbin/nginx -s reload加载是一样的,日志切割,实际还是在写原来的日志,只有加载了才会写新的日志)
执行脚本 sh为执行脚本命令 -x查看脚本执行的过程
[[email protected] vhost]# sh -x /usr/local/sbin/nginx_log_rotate.sh
++ date -d ‘-1 day‘ +%Y%m%d (定义变量)
- d=20180605 (d就是变量)
- logdir=/tmp/ (日志目录)
- nginx_pid=/usr/local/nginx/logs/nginx.pid
- cd /tmp/ (进入日志目录)
++ ls test.com.log yum.log (有两个日志文件,循环了两次) - for log in ‘
ls *.log
‘ - mv test.com.log test.com.log-20180605 (第一次循环生成日志后面加了日期后缀)
- for log in ‘
ls *.log
‘ - mv yum.log yum.log-20180605 (第二次循环日志生成后面加了日期后缀)
++ cat /usr/local/nginx/logs/nginx.pid (cat下PID) - /bin/kill -HUP 2026 (加载后生成新的文件yum.log和test.com)
写完脚本后需要写任务计划
[[email protected] vhost]# crontab -e
每天凌晨零点去执行脚本
0 0 /bin/bash /usr/local/sbin/nginx_log_rotate.sh
30天以前的日志做删除
[[email protected] vhost]# find /tmp/ -name .log-* -type f -mtime +30 |xargs rm
课程名称:12.12?静态文件不记录日志和过期时间
笔记内容:
[[email protected] ~]# vim /usr/local/nginx/conf/vhost/test.com.conf
location ~ ..(gif|jpg|jpeg|png|bmp|swf)$
(location匹配的意思 脱义符(为了精准匹配 文件名.jpg) |或者的意思)
{
expires 7d; (过期时间,缓存在用户浏览器中时间)
access_log off;
}
location ~ ..(js|css)$
{
expires 12h;
access_log off;
}
检查和加载
配置文件中expires的效果(过期时间)
以上是关于6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)的主要内容,如果未能解决你的问题,请参考以下文章