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

时间:2022-04-26
本文章向大家介绍linux学习第四十五篇:Nginx访问日志,Nginx日志切割,静态文件不记录日志和过期时间,主要内容包括Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

Nginx访问日志

  • 日志格式 vim /usr/local/nginx/conf/nginx.conf //搜索log_format 下图中就是Nginx的日志格式: combined_realip是日志格式名,我们可以自己自定义,这里我们改为xie_log

字段

含义

$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的日志:

用curl访问test.com后查看日志:

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
  • 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;
    }
  • 保存退出后记得-t,-s测试加载配置文件
  • curl测试: 以gif,js等等这些文件结尾的静态文件都不会记录在日志中