十二周三次课 (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文件
测试过期时间:
转载于:https://blog.51cto.com/415326/2086849