LNMP架构(Nginx访问日志、Nginx日志切割、静态文件不记录日志和过期时间)

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.修改虚拟主机配置文件

  1. 编辑虚拟机配置文件
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

查看日志:

转载于:https://my.oschina.net/yolks/blog/1927990

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值