1. 程式人生 > >lamp-日誌設置(訪問日誌切割、不記錄靜態文件日誌、緩存文件過期時間)

lamp-日誌設置(訪問日誌切割、不記錄靜態文件日誌、緩存文件過期時間)

lamp 訪問日誌 訪問日誌切割 設置靜態文件不記錄日誌 設置緩存靜態文件過期時間

訪問日誌不記錄指定類型的文件

在網站大多數元素為靜態文件,比如圖片、css、js等,這些靜態文件都可以不用記錄,我們只需要記錄哪個ip訪問了那個網頁就可以;

編輯配置文件

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在 ErrorLog "logs/111.com-error_log"的下面加入;
    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img

在CustomLog "logs/111.com-access_log" common 增加env=!img

代碼預覽

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.111.com
    ErrorLog "logs/111.com-error_log"
    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img
    CustomLog "logs/111.com-access_log" common env=!img
</VirtualHost>

生效配置

/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

測試

未設置配置前

訪問111.com/baidu.png會被日誌記錄下來

curl -x127.0.0.1:80 111.com/baidu.png
tail /usr/local/apache2.4/logs/111.com-access_log
127.0.0.1 - - [05/Mar/2018:16:41:31 +0800] "GET HTTP://111.com/baidu.png HTTP/1.1" 200 7877

設置生效後

curl -x127.0.0.1:80 111.com/baidu.png
tail /usr/local/apache2.4/logs/111.com-access_log
127.0.0.1 - - [05/Mar/2018:16:41:31 +0800] "GET HTTP://111.com/baidu.png HTTP/1.1" 200 7877

除了生效前被記錄下來的一條日誌,生效後訪問的卻並未被記錄下來;


訪問日誌切割

日誌文件會一直記錄著,總有一天會把磁盤空間給占滿,一個文件上100G如何查看刪除?那麽我們可以設置日誌按天切割成一個日誌文件,一來方便查看日誌,而來方便刪除老舊日誌;

配置虛擬主機文件

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

修改這一條配置CustomLog "logs/111.com-access_log" common env=!img
沒有配置過不記錄靜態文件日誌的小夥伴,請忽略掉後面的env=!img
修改成

CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log" common env=!img

代碼預覽

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.111.com
    ErrorLog "logs/111.com-error_log"
    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img
    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log" common env=!img
</VirtualHost>

生效配置

/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

測試

配置前log文件

ls /usr/local/apache2.4/logs/
[root@shu-test 111.com]# ls /usr/local/apache2.4/logs/
111.com-access_log  access_log  httpd.pid           szl.com-error_log
111.com-error_log   error_log   szl.com-access_log
[root@shu-test 111.com]#

配置生效,訪問後log文件

curl -x127.0.0.1:80 111.com/sdfhskjadfh.df

[root@shu-test 111.com]# curl -x127.0.0.1:80 111.com/sdfhskjadfh.df
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL /sdfhskjadfh.df was not found on this server.</p>
</body></html>

ls /usr/local/apache2.4/logs/目錄下面多出了111.com-access_20180305.log按年月日的log文件

[root@shu-test 111.com]# ls /usr/local/apache2.4/logs/
111.com-access_20180305.log  111.com-error_log  error_log  szl.com-access_log
111.com-access_log           access_log         httpd.pid  szl.com-error_log
[root@shu-test 111.com]#

設置靜態元素緩存過期時間

瀏覽器訪問網站圖片時,會把靜態文件下載到電腦上,這樣下次再訪問時就不用去遠程下載,達到節約服務器帶寬的作用;
然而每個網站都是有內容更新的,我們一般設置一天更新一次,不設置更新那麽本機訪問的網頁就是以前的舊網頁,而不是更新後的網頁;

編輯虛擬配置文件

vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

增加配置


<IfModule mod_expires.c>
    ExpiresActive on  //打開該功能的開關
    ExpiresByType image/gif  "access plus 1 days"
    ExpiresByType image/jpeg "access plus 24 hours"
    ExpiresByType image/png "access plus 24 hours"
    ExpiresByType text/css "now plus 2 hour"
    ExpiresByType application/x-javascript "now plus 2 hours"
    ExpiresByType application/javascript "now plus 2 hours"
    ExpiresByType application/x-shockwave-flash "now plus 2 hours"
    ExpiresDefault "now plus 0 min"
</IfModule>

配置預覽

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.111.com
    <IfModule mod_expires.c>
        ExpiresActive on
        ExpiresByType image/gif  "access plus 1 days"
        ExpiresByType image/jpeg "access plus 24 hours"
        ExpiresByType image/png "access plus 24 hours"
        ExpiresByType text/css "now plus 2 hour"
        ExpiresByType application/x-javascript "now plus 2 hours"
        ExpiresByType application/javascript "now plus 2 hours"
        ExpiresByType application/x-shockwave-flash "now plus 2 hours"
        ExpiresDefault "now plus 0 min"
    </IfModule>
    ErrorLog "logs/111.com-error_log"
    SetEnvIf Request_URI ".*\.gif$" img
    SetEnvIf Request_URI ".*\.jpg$" img
    SetEnvIf Request_URI ".*\.png$" img
    SetEnvIf Request_URI ".*\.bmp$" img
    SetEnvIf Request_URI ".*\.swf$" img
    SetEnvIf Request_URI ".*\.js$" img
    SetEnvIf Request_URI ".*\.css$" img
    CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" common env=!img
</VirtualHost>

加載expires模塊

由於增加了內容,調用了新模塊expires,那麽我們也要讓apache加載對應模塊才能生效

vim /usr/local/apache2.4/conf/httpd.conf
取消註釋
LoadModule expires_module modules/mod_expires.so

查詢expires模塊是否正常加載(加載成功

/usr/local/apache2.4/bin/apachectl -M |grep expires
expires_module (shared)

生效配置

/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful

測試

curl -x127.0.0.1:80 111.com/baidu.png -I


HTTP/1.1 200 OK
Date: Mon, 05 Mar 2018 09:42:30 GMT
Server: Apache/2.4.29 (Unix) PHP/5.6.30
Last-Modified: Mon, 05 Mar 2018 09:39:35 GMT
ETag: "8bfa-566a71a942179"
Accept-Ranges: bytes
Content-Length: 35834
Cache-Control: max-age=86400
Expires: Tue, 06 Mar 2018 09:42:30 GMT
Content-Type: image/png

其中Cache-Control: max-age=86400 表示緩存時間為86400秒
Expires代表緩存過期時間;

lamp-日誌設置(訪問日誌切割、不記錄靜態文件日誌、緩存文件過期時間)