LNMP---日志不记录静态文件、日志切割、静态文件过期缓存、nginx防盗链

原创
2019/10/20 19:35
阅读数 89

4.39 日志不记录静态文件
4.40 日志切割
4.41 静态文件过期缓存
4.42 nginx防盗链

 

扩展:

yum install lrzsz -y
rz 上传文件
sz filename  这样去把这个文件推送到windows上

一、日志不记录静态文件

在访问日志里,过滤掉一些图片、js、css类的请求日志。因为这样的请求日志没多大用处,而且会占用很大的磁盘空间

在虚拟主机配置文件里增加配置:   >  1.txt  可以清空一个文件内容

location ~* \.(png|jpeg|gif|js|css|bmp|flv)$    #  ~* 表示不区分大小写的匹配,\给后面的.脱义,.表示任意一个字符,$以括号中的为结尾的
{
    access_log off;    #关闭日志
}

二、日志切割

作用:避免日志越来越大,可能有一天会把整个磁盘写满。

系统里有一个日志切割的服务:

logrotate  工具
配置文件: /etc/logrotate.conf
子配置文件:/etc/logrotate.d/*

Nginx的日志切割配置文件:

vim /etc/logrotate.d/nginx

/var/log/nginx/*.log /data/logs/*.log {
        daily
        dateext
        missingok
        rotate 52
        compress
        delaycompress
        notifempty
        create 640 nginx adm
        sharedscripts
        postrotate
                #重启nginx,重新加载日志文件,防止不写
                if [ -f /var/run/nginx.pid ]; then        
                        kill -USR1 `cat /var/run/nginx.pid`
                fi
        endscript
}

测试执行:

logrotate -vf /etc/logrotate.d/nginx   -f 强制切割

日志切割配置文件的配置参数说明:

compress                        

通过gzip压缩转储以后的日志

nocompress                      

不压缩

copytruncate                    

用于还在打开中的日志文件,把当前日志备份并截断

nocopytruncate                  

备份日志文件但是不截断

create mode owner group         

以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志

nocreate                        

不建立新的日志文件

delaycompress 和 compress       

 一起使用时,转储的日志文件到下一次转储时才压缩

nodelaycompress                 

覆盖 delaycompress 选项,转储同时压缩。

errors address                  

 专储时的错误信息发送到指定的Email 地址

ifempty                         

即使是空文件也转储,这个是 logrotate 的缺省选项。

notifempty                      

如果是空文件的话,不转储

mail address                    

把转储的日志文件发送到指定的E-mail 地址

nomail                          

转储时不发送日志文件

olddir directory                

转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统

noolddir                        

转储后的日志文件和当前日志文件放在同一个目录下

prerotate/endscript             

在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行

postrotate/endscript            

在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

daily                           

指定转储周期为每天

weekly                          

指定转储周期为每周

monthly                         

指定转储周期为每月

rotate count                    

指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份

tabootext [+] list 让logrotate  

 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和 ~

size size                       

当日志文件到达指定的大小时才转储,bytes(缺省)及KB(sizek)或MB(sizem)

dateext

使用日期的后缀格式

missingok

在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误

三、静态文件过期缓存

让图片之类的静态文件,缓存在客户端的浏览器中,在没有过期之前,浏览器不需要请求该图片。
就是为了让这些图片有一个时效性。
如果服务器上图片已经做了更新,但是客户端访问到的还是旧的。

curl -x 用来指定目标服务器的IP和端口,例:  curl -x127.0.0.1:80 discuz.tobe.com -I

bc 是一个linux系统下面的计算器,yum install -y bc

通过修改虚拟主机配置文件,增加或更改:

vim /etc/nginx/conf.d/discuz.tobe.com.conf

location ~* \.(png|jpeg|gif|js|css|bmp|flv)$
    {
        expires 1d;        #过期时间为1天
        access_log off;
    }

nginx -t
nginx -s reload

此时过期时间为一天

四、nginx防盗链

    两个网站 A 和 B, A网站引用了B网站上的图片,这种行为就叫做盗链。
    防盗链,就是要防止A引用B的图片。

A(discuz.tobe.com)、B(www.tobeblog.com)

此时B网站下有一个1.png图片,使用A网站进行发帖子,上传网络图片:http://www.tobeblog.com/1.png的形式,叫做盗链。

因为是A盗取B网站的图片,所以到B网站进行配置防盗链:


vim /etc/nginx/conf.d/blog.tobe.com.conf           blog.tobe.com.conf(www.tobeblog.com是之前给blog.tobe.com做的重定向)

location ~ \.(png|gif|jpeg|bmp|mp3|mp4|flv)$
    {
        valid_referers none blocked server_names *.jiang.com;        #设置哪个网站可以引用图片(白名单)
        if ($invalid_referer) {
                return 403;
        }
        access_log off;    #关闭日志
        expires 1d;        #过期时间
    }

nginx -t
nginx -s reload

ctrl+F5刷新页面后,1.png返回403,而B网站可以正常访问

测试防盗链:

curl的-e指定自定义的referer

curl -x127.0.0.1:80 -e "http://www.jiang.com/1.txt" http://www.tobeblog.com/1.png -I   *.jiang.com为白名单,所以可以访问

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部