十二周三次课 (3月14日)

12.10 Nginx访问日志 12.11 Nginx日志切割 12.12 静态文件不记录日志和过期时间

12.10 Nginx访问日志

日志格式:

vim /usr/local/nginx/conf/nginx.conf //搜索log_format,注意配置文件中,分号;是结束符

combined_realip:日志格式的名字,后面可以调用它

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

$http_x_forwarded_for:代理服务器IP,如果使用了代理,则会记录代理的IP

$time_local:服务器本地时间

$host:访问的主机名(域名)

$request_uri:访问的URL地址

$status:状态码

$http_referer:为referer地址

$http_user_agent:为usr_agent

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

access_log /tmp/1.log aming; //这里的aming就是在nginx.conf中定义的日志格式名字,如果不写就是默认的日志格式,比较简单

-t && -s reload

测试

curl -x127.0.0.1:80 test2.com/admin/index.html/jfasljgsn –I

curl -x127.0.0.1:80 test3.com/admin/index.html/jfasljgsn –I

查看日志:

cat /tmp/1.log

12.11 Nginx日志切割

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

自定义shell 脚本

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

#! /bin/bash

d=`date -d "-1 day" +%Y%m%d` //生成昨天的日期,格式年月日

logdir="/tmp/" //日志目录

nginx_pid="/usr/local/nginx/logs/nginx.pid" //pid路径一定要对,不然最后一条命令就无法执行

cd $logdir //进入到日志目录下

for log in `ls *.log` //进行循环查看log文件

do

   mv $log $log-$d //改名成log名-昨天日期

done

/bin/kill -HUP `cat $nginx_pid` //重新加载,生成新的日志文件

执行脚本:sh -x /usr/local/sbin/nginx_log_rotate.sh

任务计划:crontab -e

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

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

配置如下

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ //【.*】表示通配。小括号里有【|】:表示或者。【\.】:表示脱义,如果不加【\】,后面的【.】表示任何字符

   {

         expires      7d; // expires配置过期时间

         access_log off; //配置为off就可以不记录访问日志

   }

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

   {

         expires      12h;

         access_log off;

}

测试记录:

不记录.gif 和.js文件

测试过期时间: