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

Nginx访问日志

1.打开配置文件,搜索log_formatcss

vim /usr/local/nginx/conf/nginx.conf

2.访问日志经常使用变量含义html

  • $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而且进行保存nginx

4.修改虚拟主机配置文件shell

  1. 编辑虚拟机配置文件
vim /usr/local/nginx/conf/vhost/test.com.conf

2)添加以下代码vim

access_log /tmp/1.log yolks_realip; #后面此名称表明主配置文件的日志规则名称,此处不指定则使用默认的日志规则,显示内容比较简单

5.检查配置文件并从新加载bash

/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.查看错误日志格式curl

[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,添加以下代码url

## 假设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

查看日志:

相关文章
相关标签/搜索