(六)訪問日誌不記錄靜態文件、訪問日誌切割與靜態元素過時時間

訪問日誌不記錄靜態文件

  • 介紹

這部分至關於apache配置訪問日誌的延伸。上節咱們說到配置訪問日誌,它會記錄不少東西,如訪客來源操做什麼的。好比訪客查看了一張圖片,日誌就會記錄下「訪客查看了這張圖片」這個信息。有得網頁,頁就有幾百張圖片,這樣都記錄下來,放到咱們服務器上負擔太大,並且這些信息多餘咱們來講意義不大。因此這一節,咱們的需求就是,在記錄日誌的同時,過忽略這些意義不大的文件日誌javascript

  • 具體操做
    1.修改虛擬主機的配置文件
    由於咱們作的是關於訪問日誌的設置,因此改改虛擬主機的配置文件就行了,所以若是你的虛擬主機配置有問題請找前面的課
#進入配置文件、若是
[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
#配置文件以下
<VirtualHost *:80>
    DocumentRoot "/data/wwroot/111.com"
    ServerAlias www.example.com 211.com
    ServerName 111.com
    <IfModule mod_rewrite.c>
           RewriteEngine on
           RewriteCond %{HTTP_HOST} !^111.com$
    RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
    </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 "logs/111.com-access_log" combined env=!img//該處最後一段表示不要img結尾的
</VirtualHost>
  • 實驗
    訪問網站的一張圖片,無論有沒有,而後查看訪問日誌

如今咱們尚未重啓服務,因此剛纔配置的文件尚未生效php

#訪問網站,這個圖片有沒有均可以,顯示404,由於咱們自己就沒有這個文件
[root@centos001 ~]# curl -x192.168.10.120:80 111.com/sdafh.jpg -I
HTTP/1.1 404 Not Found
Date: Wed, 27 Dec 2017 14:14:50 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1
#查看訪問日誌
[root@centos001 ~]# tail /usr/local/apache2.4/logs/111.com-access_log
#輸出
192.168.10.120 - - [27/Dec/2017:22:14:50 +0800] "HEAD HTTP://111.com/sdafh.jpg HTTP/1.1" 404 - "-" "curl/7.29.0"
#這裏能看到訪問日誌裏記錄了,訪客查看了圖片的這個信息

2.檢查並重啓服務css

[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl graceful

測試
用再次訪問圖片,檢查訪問日誌有沒有記錄。由於咱們的配置文件寫了不要jpg結尾的文件,後面的到的結果固然是沒有了html


訪問日誌切割

  • 目的:日誌一直記錄總有一天會把整個磁盤佔滿,因此有必要讓它自動切割,並刪除老的日誌文件 簡單來講就是 天天把日誌歸檔 到一個文件下,方便按期刪除
  • 方法 修改虛擬機配置文件 1.進入虛擬機修改文件
#進入配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
#修改的部分,保存並退出
CustomLog ""|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access__%Y%m%d.log 86400" combined env=!img

輸入圖片說明
解說java

|/usr/local/apache2.4/bin/rotatelogs 指定一個叫rotatelogs的日誌切割工具(httpd自帶的);
-l意爲以當前系統的時間爲基準,如若不指定將會以UTC(美國時間)的時間去指定,中國是CST(date能看到);
access__%Y%m%d.log 86400爲日誌的名字,%Y%m%d爲年月日,86400爲一天總的秒數(寫的時候前面往加空格,後面就沒有生成新的文件)apache

2.檢查讀寫並重啓服務,vim

[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl graceful

3.測試 查看訪問日誌有沒有被切割,也就是生成有日期的文件centos

#訪問一個php文件,圖片什麼的沒有記錄
[root@centos001 ~]# curl -x192.168.10.120:80 111.com/123.php
#下面ls前面沒有]是由於咱們進入了網站文件中,也能看到生成了新的文件
123.com[root@centos0ls /usr/local/apache2.4/logs/  
111.com-access__20171228.log  111.com-error_log   abc.com-error_log  error_log
111.com-access_log            abc.com-access_log  access_log         httpd.pid
### 配置靜態元素過時時間
- 介紹   
瀏覽器訪問網站的圖片時會把靜態的文件緩存在本地電腦裏,這樣下次再訪問時就不用去遠程下載了,能讓咱們訪問速度更快
- 目的  
緩存總不能一直緩存吧,全部就有了「緩存過時時間」這個概念,這個過時時間實在服務上定義的,下面就將介紹怎麼設置這個時間
-準備
1.在配置以前先看個東西,首先下載一個靜態元素(圖片什麼的)到咱們的服務器上
```#進入服務器目錄
[root@centos001 ~]# cd /data/wwroot/111.com/
[root@centos001 111.com]# ls
123.php  index.php
#傳一張圖片到虛擬服務器上
[root@centos001 111.com]# rz
#這裏名字叫qq.png,最好先改個簡單點名字
[root@centos001 111.com]# ls
123.php  index.php  qq.png

2.用瀏覽器訪問咱們的圖片,按f12後狀態碼爲200;當咱們刷新後狀態碼就變304了,304的意思是檢測到x咱們訪問的圖片沒有被修改過,因此就不用在重服務器上下載圖片了。可是這樣圖片就一直緩存在咱們電腦裏了,因此接下來將給圖片配置失效時間
輸入圖片說明
輸入圖片說明
輸入圖片說明瀏覽器

修改配置文件

  • 1.增長的配置文件以下
<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>

輸入圖片說明 2.檢查讀寫、加載模塊後重啓服務緩存

#檢查讀寫
[root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
#檢查是否有加載模塊,明顯沒有
[root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expire
  • 編輯主配置文件並加載模塊
#進入主配置文件
[root@centos001 111.com]# vim /usr/local/apache2.4/conf/httpd.conf
#重啓服務
[root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl graceful
#檢查加載模塊成功
[root@centos001 111.com]# /usr/local/apache2.4/bin/apachectl -M |grep expire
expires_module (shared)

測試

  • 1.從新進入瀏覽器,訪問圖片,f12查看狀態碼,固然能夠F5刷新一哈
    如今能看到過時時間爲1天,下面也有過時的具體時間
    輸入圖片說明
  • 2.固然咱們也能在虛擬機上直接訪問
[root@centos001 111.com]# curl -x192.168.10.120:80 111.com/qq.png -I
HTTP/1.1 200 OK
Date: Wed, 27 Dec 2017 17:43:36 GMT//當前時間
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Last-Modified: Wed, 27 Dec 2017 16:41:20 GMT
ETag: "e01-5615511a9ac00"
Accept-Ranges: bytes
Content-Length: 3585
Cache-Control: max-age=86400 //週期
Expires: Thu, 28 Dec 2017 17:43:36 GMT //過時時間
Content-Type: image/png

擴展

apache日誌記錄代理IP以及真實客戶端IP
http://ask.apelearn.com/question/960
apache只記錄指定URI的日誌
http://ask.apelearn.com/question/981
apache日誌記錄客戶端請求的域名
http://ask.apelearn.com/question/1037
apache 日誌切割問題
http://ask.apelearn.com/question/566

相關文章
相關標籤/搜索