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

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

 

扩展:node

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

1、日志不记录静态文件linux

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

在虚拟主机配置文件里增长配置:   >  1.txt  能够清空一个文件内容nginx

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

2、日志切割vim

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

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

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

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

3、静态文件过时缓存

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

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

此时过时时间为一天

4、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为白名单,因此能够访问

相关文章
相关标签/搜索