2018-3-14 Linux学习笔记
2023-01-31 01:01:52
- Nginx访问日志的格式是在主配置文件中定义的.
- vim /usr/local/nginx/conf/nginx.conf //搜索log_fORMat
-
日志字段含义:
$remote_addr 客户端IP(公网IP)
$Http_x_forwarded_for 代理服务器的IP
$time_local 服务器本地时间
$host 访问主机名(域名)
$request_uri 访问的url地址
$status 状态码
$http_referer referer
$http_user_agent user_agent - 除了在主配置文件nginx.conf里定义日志格式外,还需要在虚拟主机配置文件中
vi /usr/local/nginx/conf/vhost/test.com.conf - 增加一行,以配置访问日志的存放位置
access_log /tmp/1.log nginx_log; - 这里的nginx_log就是在nginx.conf中定义的日志格式名字
- /usr/local/nginx/sbin/nginx -t
- /usr/local/nginx/sbin/nginx -s reload
- 访问日志测试结果:
curl -x127.0.0.1:80 test.com -I
curl -x127.0.0.1:80 test2.com -I
cat /tmp/1.log
- 如前所说,为了防止日志过大占用存储空间,我们需要将日志切割并定期清理.由于nginx没有自带切割工具,所以在此学习用shell脚本来实现日志切割.
-
自定义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可以看到脚本执行过程 - 设定日志切割任务计划
crontab -e -
加入如下一行:
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh - 定期清理日志文件示例(将超过30天的日志文件删除):
find /tmp/ -name *.log-* -tpye f -mtime +30 | xargs rm
- 设置静态文件不记录日志和过期时间的方法:
- 编辑虚拟主机配置文件
vim /usr/local/nginx/conf/vhost/test.com.conf - 配置如下
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 7d;
access_log off;
}
location ~ .*\.(js|CSS)$
{
expires 12h;
access_log off;
}
- /usr/local/nginx/sbin/nginx -t
- /usr/local/nginx/sbin/nginx -s reload
- 测试结果:
cd /data/wwwroot/test.com
vim 1.gif
vim 2.css
curl -x127.0.0.1:80 test.com/1.gif
curl -x127.0.0.1:80 test.com/2.css
curl -x127.0.0.1:80 test.com/index.html
curl -x127.0.0.1:80 test.com/2.cssasdfa
curl -x127.0.0.1:80 test.com/1.gif -I
cat /tmp/1.log
相关文章