Nginx访问日志
1.打开配置文件,搜索log_format
vim /usr/local/nginx/conf/nginx.conf
2.访问日志常用变量含义
- $remote_addr : 客户端IP(公网IP)
- $http_x_forwarded_for : 代理服务器的IP
- $time_local : 服务器本地时间
- $host : 访问主机名(域名)
- $request_uri : 访问的url地址
- $status : 状态码
- $http_referer : referer
- $http_user_agent : user_agent
3.此处我们将原来的规则名称combined_realip修改为yolks_realip并且进行保存
4.修改虚拟主机配置文件
- 编辑虚拟机配置文件
vim /usr/local/nginx/conf/vhost/test.com.conf
2)添加如下代码
access_log /tmp/1.log yolks_realip; #后面此名称代表主配置文件的日志规则名称,此处不指定则使用默认的日志规则,显示内容比较简单
5.检查配置文件并重新加载
/usr/local/nginx/sbin/nginx -t #检查
/usr/local/nginx/sbin/nginx -s reload #重启
6.curl测试
[root@yolks2 ~]# curl -x127.0.0.1:80 test2.com/admin/admin.html -I
HTTP/1.1 301 Moved Permanently
Server: nginx/1.6.3
Date: Tue, 14 Aug 2018 14:45:04 GMT
Content-Type: text/html
Content-Length: 184
Connection: keep-alive
Location: http://test.com/admin/admin.html
7.查看错误日志格式
[root@yolks2 ~]# cat /tmp/test.com.log
127.0.0.1 - [14/Aug/2018:22:45:04 +0800] test2.com "/admin/admin.html" 301 "-" "curl/7.29.0"
Nginx日志切割
日志切割脚本实现,即shell实现
1.编辑文件 /usr/local/sbin/nginx_log_rotate.sh,添加如下代码
## 假设nginx的日志存放路径为/data/logs/
d=`date -d "-1 day" +%Y%m%d` #生成昨天的日期:例如20180813
logdir="/tmp/" #定义日志目录
nginx_pid="/usr/local/nginx/logs/nginx.pid" #pid号
cd $logdir #进入目录
for log in `ls *.log` #循环ls出来的log
do
mv $log $log-$d #修改名称
done
/bin/kill -HUP `cat $nginx_pid` #杀掉进程重启,可使用 /usr/local/nginx/sbin/nginx -s reload 替换
2.执行脚本命令 : sh
- x : 查看执行过程
执行命令
[root@yolks2 ~]# sh -x /usr/local/sbin/nginx_log_rotate.sh
执行过程
++ date -d '-1 day' +%Y%m%d
+ d=20180813
+ logdir=/tmp/
+ nginx_pid=/usr/local/nginx/logs/nginx.pid
+ cd /tmp/
++ ls test.com.log
+ for log in '`ls *.log`'
+ mv test.com.log test.com.log-20180813
++ cat /usr/local/nginx/logs/nginx.pid
+ /bin/kill -HUP 885
3.查看/tmp/目录下test*的文件
[root@yolks2 ~]# ls /tmp/ |grep test*
test.com.log
test.com.log-20180813
4.定时清理旧日志
find /tmp/ -name *.log-* -type f -mtime +30 |xargs rm #删除30天以前的日志文件
5.添加定时任务计划
1)编辑定时任务文件
crontab -e
2)计划任务代码如下
0 0 * * * /bin/bash /usr/local/sbin/nginx_log_rotate.sh #每天0点执行
静态文件不记录日志和过期时间
1.编辑配置文件**/usr/local/nginx/conf/vhost/test.com.conf**添加如下代码:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #匹配静态文件后缀,.gif|.jpg|.jpeg|.png|.bmp|.swf
{
expires 7d; #过期时间
access_log off; #访问日志开关
}
location ~ .*\.(js|css)$ #匹配.js和.css文件
{
expires 12h; #过期时间
access_log off; #访问日志开关
}
2.编写测试文件,比如图片
[root@yolks2 ~]# touch /data/wwwroot/test.com/test.jpg
[root@yolks2 ~]# ls /data/wwwroot/test.com/
admin index.html test.jpg
3.测试
curl -x127.0.0.1:80 test.com/test.jpg -I
查看日志: