课程名称:12.10 Nginx访问日志
笔记内容:

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf
定义日志格式
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第1张图片
combined_realip:日志格式名字,可以写任意,但是后面应用都要写这个
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)
log_format ys '$remote_addr $http_x_forwarded_for [$time_local]'
' $host "$request_uri" $status'
' "$http_referer" "$http_user_agent"';
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第2张图片

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

[root@localhost ~]# vim /usr/local/nginx/conf/vhost/test.com.conf
增加access_log /tmp/test.com.log ys;

6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第3张图片
检测加载
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)

6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)

课程名称:12.11 Nginx日志切割
笔记内容:
Nginx没有自带的日志切割工具,借助系统自带可以使用系统logrotate命令切割日志的方法(自己扩展)
也可以自己写脚本(课程)
Shell脚本(所有的脚本放在/usr/local/sbin目录下)
创建[root@localhost ~]# vim /usr/local/sbin/nginx_log_rotate.sh
样例:
#! /bin/bash
/data/logs/ (假设nginx的日志存放路径)
d=date -d "-1 day" +%Y%m%d (为了生成日期,年月日)
([root@localhost ~]# 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 (到日志路径下)
做循环
举例:
([root@localhost vhost]# for f in 'ls ' ; do ls -l $f ; done
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)
f代表文件(变量名字),in在哪里进行循环,ls则是显示出来,6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)
这里就是在这两个文件中进行循环;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加载是一样的,日志切割,实际还是在写原来的日志,只有加载了才会写新的日志)
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第4张图片
执行脚本 sh为执行脚本命令 -x查看脚本执行的过程
[root@localhost vhost]# sh -x /usr/local/sbin/nginx_log_rotate.sh
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第5张图片
++ 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)
    6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第6张图片
    写完脚本后需要写任务计划
    [root@localhost vhost]# crontab -e
    每天凌晨零点去执行脚本
    0 0 /bin/bash /usr/local/sbin/nginx_log_rotate.sh
    6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)
    30天以前的日志做删除
    [root@localhost vhost]# find /tmp/ -name
    .log-* -type f -mtime +30 |xargs rm

课程名称:12.12 静态文件不记录日志和过期时间
笔记内容:
[root@localhost ~]# 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;
}
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第7张图片

检查和加载
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)
配置文件中expires的效果(过期时间)
6月8日任务(12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件)_第8张图片