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爲白名單,因此能夠訪問

相關文章
相關標籤/搜索