博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间
阅读量:6453 次
发布时间:2019-06-23

本文共 2158 字,大约阅读时间需要 7 分钟。

hot3.png

Nginx访问日志

 

cd /usr/local/nginx/conf/vhost

 

先看看日志格式 

[root ~]# grep -A2 log_format /usr/local/nginx/conf/nginx.conf

    log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'

    ' $host "$request_uri" $status'

    ' "$http_referer" "$http_user_agent"';

 

vim /usr/local/nginx/conf/nginx.conf //搜索log_format

 

combined_realip    日志格式的名字

$remote_addr    客户端IP(公网IP)  访问网站的用户的出口IP

$http_x_forwarded_for    代理服务器的IP

$time_local    服务器本地时间

$host    访问主机名(域名)

$request_uri    访问的url地址

$status    状态码

$http_referer    referer

$http_user_agent    user_agent

 

$remote_addr

225624_jXkC_3716831.png

 

 

默认的日志格式比较简单,所以修改一下。

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

 vim test.com.conf

access_log /tmp/.log nan;

 

 使用access_log来指定日志的存储路径,最后面指定日志的格式名字,测试过程如下:

/usr/local/nginx/sbin/nginx -t    //检测是否有错误

/usr/local/nginx/sbin/nginx -s reload   //重新加载

 curl -x127.0.0.1:80 -I

curl -x127.0.0.1:80 -I

 cat /tmp/test.com.log

 225639_3kBe_3716831.png

 

 

Nginx日志切割

 

Nginx的日志很简单,不像httpd还有自带的切割工具,要想切割Nginx日志需要借住系统的切割工具或者自定义脚本。

自定义shell 脚本

 vim /usr/local/sbin/nginx_log_rotate.sh//写入如下内容

#! /bin/bash

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

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    //启动脚本   -x可以看到执行过程

(记得定期删除日志  find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm)

 写完脚本后,还需要增加任务计划,做测试可以不保存但应知道。

[root vhost]# crontab -e

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

 

 

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

配置如下

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

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

    {

          expires      7d;

          access_log off;

    }

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

    {

          expires      12h;

          access_log off;

    }

使用location~可以指定对应的静态文件,expires配置过期时间,而access_log配置为off就可以不记录访问日志了。

测试如下:

/usr/local/nginx/sbin/nginx -t    //检测是否有错误

/usr/local/nginx/sbin/nginx -s reload   //重新加载

(cd /data/wwwroot/

vim 1.gif

vim 2.js   //此仅仅为模拟测试)

echo "1111111111111111" > /data/wwwroot/    //创建gif文件

echo "2222222222222222" > /data/wwwroot/.js  //创建js文件

curl -x127.0.0.1:80 -I     //访问gif类型的文件,缓存过期时间为12小时

curl -x127.0.0.1:80 -I .js           //访问js类型的文件,缓存过期时间为7d

 

可以清楚的看到Cache-control对应的时间大小,另外也可以看一下访问日志

cat /tmp/.log

 

访问了gif以及js,但都没有记录到日志中,效果实现了。

 

 

 

 

转载于:https://my.oschina.net/u/3716831/blog/1634871

你可能感兴趣的文章
leetcode 175. Combine Two Tables
查看>>
如何给一个数组对象去重
查看>>
Guava包学习-Cache
查看>>
2019-06-12 Java学习日记之JDBC
查看>>
灯箱效果(点击小图 弹出大图集 然后轮播)
查看>>
linux c 笔记 线程控制(二)
查看>>
samba服务器配置
查看>>
vue.js笔记
查看>>
【Unity3D入门教程】Unity3D之GUI浅析
查看>>
Hive 简单操作
查看>>
湘潭1247 Pair-Pair(树状数组)
查看>>
idea 不能粘贴复制问题
查看>>
IEnumerable<T>
查看>>
IntelliJ IDEA 注册码
查看>>
linux 上面配置apache2的虚拟目录
查看>>
Linux学习总结 (未完待续...)
查看>>
NoSQL数据库探讨 - 为什么要用非关系数据库?
查看>>
String字符串的截取
查看>>
switch函数——Gevent源码分析
查看>>
Spring MVC简单原理
查看>>