linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间

Nginx访问日志

  • 日志格式
    vim /usr/local/nginx/conf/nginx.conf //搜索log_format
    下图中就是Nginx的日志格式:
    combined_realip是日志格式名,我们可以自己自定义,这里我们改为xie_log
    linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间_第1张图片

字段 含义
$remote_addr 客户端IP(公网IP)
$http_x_forwarded_for 代理服务器的IP
$time_local 服务器本地时间
$host 访问主机名(域名)
$request_uri 访问的url地址
$status 状态码
$http_referer referer
$http_user_agent user_agent

  • 定义test.com的日志:
    linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间_第2张图片
    用curl访问test.com后查看日志:
    linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间_第3张图片

Nginx日志切割

  • 自定义shell 脚本
    vim /usr/local/sbin/nginx_log_rotate.sh
    写入如下内容
#! /bin/bash
## 假设nginx的日志存放路径为/data/logs/
d=`date -d "-1 day" +%Y%m%d`  //这个日期是昨天的日期
//因为日志的切割是第二天才执行这个脚本的。
logdir="/data/logs"
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` //跟Nginx的-s重新加载配置文件一样
  • 执行一下这个脚本,sh执行,-x是显示执行的过程:
    sh -x /usr/local/sbin/nginx_log_rotate.sh
    linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间_第4张图片

  • crontab -e 添加任务计划:
    0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh //每天凌晨0点执行这个脚本

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

  • vim /usr/local/nginx/conf/vhost/test.com.conf
    配置如下:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ //匹配静态文件
    {
          expires      7d; //过期时间
          access_log off;
    }
location ~ .*\.(js|css)$ //匹配js,css文件
    {
          expires      12h;
          access_log off;
    }

linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间_第5张图片

  • 保存退出后记得-t,-s测试加载配置文件

  • curl测试:
    以gif,js等等这些文件结尾的静态文件都不会记录在日志中
    linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间_第6张图片
    linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间_第7张图片

你可能感兴趣的:(lnmp)