本文共 5136 字,大约阅读时间需要 17 分钟。
日志切割,通俗一点就是将每天产生的日志单独备份起来到一个文件夹,在企业中,常常会产生大量的日志,而nginx日志默认情况下统统写入到一个文件中,文件会变的越来越大,非常不方便查看分析(多容易卡住,而且看起来非常不方便)。所以为了解决这种问题,以日期来作为日志的切割是比较好的,通常我们是以每日来做统计的。在企业中,我们将每一天的日志文件都打包备份,每天备份昨天产生的日志,生成新的日志记录今天的。当发生问题的时候,就会比较容易排查。
实验如下所示:
需要了解的知识如下:
access_log :存放成功访问nginx服务器的日志信息
error_log:存放访问nginx服务器失败的日志信息
nginx.pid:里面存放的nginx进程的pid(严格意义上来说不算日志)
补充:date的用法
第一步:
[root@nodel1 logs]# du -sh *4.0K access.log4.0K error.log4.0K nginx.pid[root@nodel1 logs]# date +%F -d -1day2019-07-29[root@nodel1 logs]# mv access.log `date +%F -d -1day`_access.log #使用命令进行备份[root@nodel1 logs]# ls2019-07-29_access.log error.log nginx.pid[root@nodel1 logs]# date +%F2019-07-30[root@nodel1 logs]# du -sh *4.0K 2019-07-29_access.log4.0K error.log4.0K nginx.pid
这种太过麻烦,我们总不能每天都去手打命令,所以我们写一个脚本,将其放定时任务中,让其自己使实行日志切割。
第二步:编写脚本
[root@nodel1 logs]# vim backup.sh里面写入内容如下: 1 #!/bin/bash 2 3 LOG_PATH=/usr/local/nginx/logs/oldlogs 4 CUR_LOG_PATH=/usr/local/nginx/logs/ 5 YESTADAY=$( date +%F -d -1day) 6 mv $CUR_LOG_PATH/access.log $LOG_PATH/${YESTADAY}_access.log 7 mv $CUR_LOG_PATH/error.log $LOG_PATH/${YESTADAY}_error.log 8 9 10 kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)[root@nodel1 logs]# chmod +x backup.sh [root@nodel1 logs]# mkdir oldlogs[root@nodel1 logs]# ll [root@nodel1 logs]# ./backup.sh[root@nodel1 logs]# ls[root@nodel1 logs]# cd oldlogs/[root@nodel1 oldlogs]# ls2019-07-29_access.log 2019-07-29_error.log
第三步:配置定时任务
[root@nodel1 oldlogs]# crontab -eno crontab for root - using an empty onecrontab: installing new crontab[root@nodel1 oldlogs]# crontab -l0 0 * * * /bin/bash /usr/local/nginx/logs/backup.sh
在实际的应用中,我们为了使nginx上的资源尽可能的少占用,而大量的高清的图片与含有信息量大的网页会占用我们非常多的资源。这不利于nginx的性能优化,为了解决这个问题,我们可以做 Gzip压缩。
Nginx性能优化功能: Gzip压缩(大幅度提高页面加载速度)
Nginx开启Gzip压缩功能, 可以使网站的css、js 、xml、html 文件在传输时进行压缩,提高访问速度,进而优化Nginx性能。
Web网站上的图片,视频等其它多媒体文件以及大文件,因为压缩效果不好,所以对于图片没有必要支压缩,如果想要优化,可以图片的生命周期设置长一点,让客户端来缓存。开启Gzip功能后,Nginx服务器会根据配置的策略对发送的内容, 如css、js、xml、html等静态资源进行压缩,使得这些内容大小减少,在用户接收到返回内容之前对其进行处理,以压缩后的数据展现给客户。这样不仅可以节约大量的出口带宽,提高传输效率,还能提升用户快的感知体验, 一举两得; 尽管会消耗一定的cpu资源,但是为了给用户更好的体验还是值得的。
经过Gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。Gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的巨大多数浏览器 都支持解析Gzip过的页面。
Gzip压缩作用:将响应报⽂发送⾄客户端之前可以启⽤压缩功能,这能够有效地节约带宽,并提⾼响应⾄客户端的速度。
网页压缩实验如下所示:
第一步:编辑nginx配置文件
[root@nodel1 ~]# cd /usr/local/nginx/conf[root@nodel1 conf]# ls[root@nodel1 conf]# vim nginx.conf 33 gzip on; #开启gzip压缩功能 34 gzip_min_length 1; # 设置允许压缩的页面最小字节数; 35 gzip_comp_level 2; #设置压缩比率,最小为1,处理速度快,传输速度慢;9为最大压缩比,处理速度慢,传输速度快; 这里表示压缩级别,可以是0到9中的任一个,级别越高,压缩就越小,节省了带宽资源,但同时也消耗CPU资源,所以一般折中为6 36 gzip_types text/plain application/x-javascript test/css application/xml vascript applic ation/x-httpd/php image/gif image/png; #制定压缩的类型,线上配置时尽可能配置多的压缩类型
补充:关于gzip的其它配置
gzip_buffers 4 16k; #设置压缩缓冲区大小,此处设置为4个16K内存作为压缩结果流缓存gzip_http_version 1.1; #压缩版本gzip_disable "MSIE [1-6]\."; #配置禁用gzip条件,支持正则。此处表示ie6及以下不启用gzip(因为ie低版本不支持)gzip vary on; #选择支持vary header;改选项可以让前端的缓存服务器缓存经过gzip压缩的页面; 这个可以不写,表示在传送数据时,给客户端说明我使用了gzip压缩线上使用的Gzip压缩配置
第二步:编辑nginx的默认发布文件
[root@nodel1 conf]# cd ../html[root@nodel1 html]# ls50x.html index.html[root@nodel1 html]# cp /etc/passwd .[root@nodel1 html]# du -sh passwd 4.0K passwd[root@nodel1 html]# vim passwd [root@nodel1 html]# du -sh passwd 1.1M passwd[root@nodel1 html]# mv passwd index.htmlmv: overwrite ‘index.html’? y
然后在网页查看大小(按下F12,之后选择Network->Size,便可以查看到其文件大小):
第三步:重启服务,查看
[root@nodel1 html]# /usr/local/nginx/sbin/nginx -s reload
查看:
图片压缩实验如下所示:
第一步:重新编译。添加新的模块
[root@foundation15 Desktop]# scp -r gd-devel-2.0.35-26.el7.x86_64.rpm root@172.25.15.1:/mnt
[root@nodel1 conf]# systemctl stop nginx #停止服务,要重新编译[root@nodel1 conf]# cd /mnt[root@nodel1 mnt]# ls[root@nodel1 mnt]# cd nginx-1.17.1/[root@nodel1 nginx-1.17.1]# make clean[root@nodel1 nginx-1.17.1]# yum install -y /mnt/gd-devel-2.0.35-26.el7.x86_64.rpm
[root@nodel1 nginx-1.17.1]# ./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_image_filter_module=dynamic
[root@nodel1 nginx-1.17.1]# make
[root@nodel1 nginx-1.17.1]# cd objs/[root@nodel1 objs]# cp nginx -f /usr/local/nginx/sbin/nginx #将新的二进制文件替换成之前的二进制文件[root@nodel1 objs]# mkdir /usr/local/nginx/modules #创建新的目录,并将图像模块放在目录下[root@nodel1 objs]# ls[root@nodel1 objs]# cp ngx_http_image_filter_module.so /usr/local/nginx/modules
第二步:编辑nginx配置文件
[root@nodel1 objs]# cd /usr/local/nginx/conf/[root@nodel1 conf]# vim nginx.conf 1 load_module modules/ngx_http_image_filter_module.so; 55 image_filter resize 50 100;[root@nodel1 conf]# systemctl start nginx[root@nodel1 conf]# systemctl status nginx.service
第三步:测试
在上面的共享图片中我们可以得知,在浏览器中查询时必须得输入完整的路径,其中包括图片的名称,可是这样显然是不合理的,我们认为将图片都放置一个目录下,通过查看目录选择图片才是一种不错的方式
第四步:补充
在浏览器中只输入默认发布目录下的目录时,会发现415报错
[root@nodel1 search]# cd -/usr/local/nginx/conf[root@nodel1 conf]# vim nginx.conf 55 # image_filter resize 50 100; 57 autoindex on;[root@nodel1 conf]# systemctl reload nginx
.再次在浏览器中输入默认发布目录下的目录时,会发现此时可以对目录下的文件进行选择并查看,然后点击redhat.jpg图片进行查看
转载地址:http://lojvb.baihongyu.com/