十週三次課

十週三次課php

11.18Apache用戶認證html

11.19/11.20域名跳轉apache

11.21Apache訪問日誌vim

11.18Apache用戶認證瀏覽器

httpd的用戶認證

•  vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那個虛擬主機編輯成以下內容安全

<VirtualHost *:80>服務器

    DocumentRoot "/data/wwwroot/www.123.com"ssh

    ServerName www.123.comcurl

    <Directory /data/wwwroot/www.123.com> //指定認證的目錄tcp

        AllowOverride AuthConfig //這個至關於打開認證的開關

        AuthName "123.com user auth" //自定義認證的名字,做用不大

        AuthType Basic //認證的類型,通常爲Basic,其餘類型阿銘沒用過

        AuthUserFile /data/.htpasswd  //指定密碼文件所在位置

        require valid-user //指定須要認證的用戶爲所有可用用戶

    </Directory>

</VirtualHost>

• /usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd aming

• 從新加載配置-t , graceful

• 綁定hosts,瀏覽器測試

• curl -x127.0.0.1:80 www.123.com //狀態碼爲401

• curl -x127.0.0.1:80 -uaming:passwd www.123.com //狀態碼爲200

•  還能夠針對單個文件進行認證

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    <FilesMatch admin.php>

        AllowOverride AuthConfig

        AuthName "123.com user auth"

        AuthType Basic

        AuthUserFile /data/.htpasswd

        require valid-user

    </FilesMatch>

</VirtualHost>

 httpd的用戶認證

瀏覽器在打開一個網站,什麼頁面都不顯示,只彈出一個對話框,讓你輸入用戶名和密碼,只有輸入正確才能訪問網站的內容 。

 需求:abc.com這個網站訪問的時候,不能直接訪問,必須輸入用戶名和密碼,驗證經過以後才能訪問網站內容

這樣作的目的是增長安全性,可是劣勢是用戶體驗不好,由於每一個人要訪問網站都必須輸入用戶名和密碼。

1. 虛擬主機的配置文件:

編輯配置文件

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

//更改111.com的虛擬主機認證內容以下:

在文件中編輯配置文件,將如下內容添加到第二段代碼中——>由於第一個虛擬主機是默認虛擬主機

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    <Directory /data/wwwroot/111.com>    //指定認證的目錄
        AllowOverride AuthConfig    //這個至關於打開認證的開關,若是沒有這一行,那就至關於沒有開啓
        AuthName "111.com user auth"    //自定義認證的名字,做用不大
        AuthType Basic        //認證的類型,通常爲Basic,其餘類型幾乎沒用過
        AuthUserFile /data/.htpasswd   //指定密碼文件所在位置——>這裏須要指定一個用戶名的密碼文件
         require valid-user        //指定須要認證的用戶爲所有可用用戶 
    </Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log"  common
</VirtualHost>

而後保存退出

2.Apache自帶命令htpasswd建立密碼文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd tianqi
New password: 
Re-type new password: 
Adding password for user tianqi
[root@tianqi-01 ~]# 

說明:

  • -c:是建立;
  • -m:是指定md5加密類型;
  • 指定用戶爲tianqi(PS:若是再次新增用戶,就不須要再加-c ,由於已經建立過密碼文件了);

如果提示錯誤,那麼先查看文件是否生成,而後查看文件內容,再去排查其餘錯誤。

3.查看 /data/.htpasswd 文件內容 - 能看到文件中有一行,以 : 冒號爲分割。

左邊是用戶名,右邊是MD5加密的密碼 ,由於是用 -m 指定了加密的類型。

[root@tianqi-01 ~]# cat /data/.htpasswd 
tianqi:$apr1$awcjrqIN$5lD3DZBm9WWMyJV3jJEAs.
[root@tianqi-01 ~]# 

4. 再增長zhangsan用戶,就不須要去 -c參數 建立了,由於已經建立過了(密碼爲123456)

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd zhangsan
New password: 
Re-type new password: 
Adding password for user zhangsan

5. 查看文件內容,會發現又增長了一行密碼
[root@tianqi-01 ~]# cat /data/.htpasswd
tianqi:$apr1$awcjrqIN$5lD3DZBm9WWMyJV3jJEAs.
zhangsan:$apr1$POkg5UqP$YJSvyCCgajf2ArL45E.fc.
[root@tianqi-01 ~]# 

6. 查看配置文件是否有錯誤,並從新加載配置文件

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

7.測試,訪問111.com的時候,會提示401狀態碼 

401狀態碼,說明訪問的內容須要作用戶認證。

[root@tianqi-01 ~]# curl -x127.0.0.1:80 111.com

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Unauthorized</title>
</head><body>
<h1>Unauthorized</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
</body></html>
[root@tianqi-01 ~]# 

[root@tianqi-01 ~]# curl -x127.0.0.1:80 111.com -I
HTTP/1.1 401 Unauthorized
Date: Thu, 01 Mar 2018 12:39:45 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

8.一樣能夠在瀏覽器中輸入111.com——>前提是要先在物理機中hosts文件定義111.com。

192.168.11.136 www.abc.com www.123.com 111.com

9. 定義完本地hosts後,用瀏覽器訪問111.com網站時就會會發現須要輸入用戶名和密碼

10. 在輸入用戶名和密碼,用戶密碼就是剛纔增長的用戶和設置的密碼

11. 會發現正常訪問到頁面了

12. 這個就是用戶認證

### curl輸入用戶名和密碼

curl -x127.0.0.1:80 -utianqi:123456 111.com -I

-u參數,而後加用戶名,再:冒號密碼

[root@tianqi-01 ~]# curl -x127.0.0.1:80 -utianqi:123456 111.com -I
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2018 13:53:19 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

[root@tianqi-01 ~]# 

這時會發現狀態碼改變了,狀態碼變成了200(200即爲正常)

如果輸錯密碼,那麼狀態碼又會變成401

[root@tianqi-01 ~]# curl -x127.0.0.1:80 -utianqi:23456 111.com -I
HTTP/1.1 401 Unauthorized
Date: Thu, 01 Mar 2018 13:55:38 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

還能夠針對單個文件進行認證(針對文件)

針對 admin.php文件 只有打開這個文件纔會執行下面的操做

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    <FilesMatch admin.php>  //跟上面的不一樣的是這行,上面是指定認證的目錄,這裏是指定單個文件。
        AllowOverride AuthConfig
        AuthName "123.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
        require valid-user
    </FilesMatch>  //這行也不一樣
</VirtualHost>

這裏和前面的用戶認證惟一不一樣的就是,使用的是 FilesMatch ,當訪問的文件匹配到admin.php的時候,它纔去執行如下的配置,而前面的用戶認證使用的Directory,指定了一個目錄,只要是這個目錄下面的都會去認證,這裏是FilesMatch ,匹配這個文件的。

1. 更改配置文件,註釋掉Directory,去使用FilesMatch 

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

  • 在配置文件修改爲如下:

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    #<Directory /data/wwwroot/111.com>
    <FilesMatch 123.php>
        AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd
         require valid-user
    </FilesMatch>
    #</Directory>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log"  common
</VirtualHost>

2.檢查配置文件是否存在語法錯誤,並從新加載配置文件

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

3.編輯123.php文件

[root@tianqi-01 ~]# vim /data/wwwroot/111.com/123.php

在配置文件中寫入

<?php
echo "123.php";

保存退出

4.檢查是否能訪問網站,這裏會看到不加-u 也能訪問到網站,狀態碼也是200,而不是401了

[root@tianqi-01 ~]# curl -x127.0.0.1:80 -utianqi:123456 111.com
111.com[root@tianqi-01 ~]# curl -x127.0.0.1:80  111.com
111.com[root@tianqi-01 ~]# curl -x127.0.0.1:80  111.com -I
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2018 14:11:39 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

[root@tianqi-01 ~]# 

5.可是在訪問123.php的時候,會提示401,這是由於針對123.php作了一個限制

[root@tianqi-01 ~]# curl -x127.0.0.1:80  111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Thu, 01 Mar 2018 14:12:53 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

6.這時候-u指定用戶名和密碼,就能夠訪問123.php了

[root@tianqi-01 ~]# curl -x127.0.0.1:80  -utianqi:123456 111.com/123.php -I
HTTP/1.1 200 OK
Date: Thu, 01 Mar 2018 14:13:57 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

[root@tianqi-01 ~]# 

11.19/11.20域名跳轉

域名跳轉

•需求,把123.com域名跳轉到www.123.com,配置以下:

<VirtualHost *:80>

    DocumentRoot "/data/wwwroot/www.123.com"

    ServerName www.123.com

    ServerAlias 123.com

    <IfModule mod_rewrite.c> //須要mod_rewrite模塊支持

        RewriteEngine on  //打開rewrite功能

        RewriteCond %{HTTP_HOST} !^www.123.com$  //定義rewrite的條件,主機名(域名)不是www.123.com知足條件

        RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定義rewrite規則,當知足上面的條件時,這條規則纔會執行

</IfModule>

</VirtualHost>

• /usr/local/apache2/bin/apachectl -M|grep -i rewrite //若無該模塊,須要編輯配置文件httpd.conf,刪除rewrite_module (shared) 前面的#

• curl -x127.0.0.1:80 -I 123.com //狀態碼爲301

域名跳轉的做用有兩點:

域名跳轉,經常使用於老域名跳轉到新域名,由於老用戶已經習慣記住一個域名了,忽然頁面換到了新的域名,就須要作這個操做。一個域名就是一個網站的名稱,就能夠經過域名訪問到該網站,由於域名涉及到一個SEO,SEO會對網站的內容進行一個價值權重定義,舊網站價值高,會一直存在各大搜索引擎,會對新網站產生不可預料的影響,因此爲了讓老用戶和搜索引擎把重心轉移到新網站,因此就須要作一個老域名跳轉到新域名的操做。SEO涉及到一個排名,網站的排名越高,在搜索引擎排名就越靠前,而這個權重是根據網站的頁面數量來斷定的,搜索引擎認爲該網站比較有價值,就會提高該網站權重,而它判斷網站是根據域名來的,在搜索引擎眼裏,一個網站是根據域名來判斷的。若一個網站有A、B兩個域名能夠同時訪問,那搜索引擎會認爲第二個B域名是一個冒牌貨,因此搜索引擎會把高權重給第一個A域名,低權重給第二個B域名。而爲了解決這種問題,把一個網站A域名跳轉到另外一個網站B域名上,提高跳轉到的那個域名的權重,而且定義一個301的狀態碼。

301狀態碼叫作永久重定向、永久跳轉。永久跳轉,搜索引擎認爲A網站不用了,就能夠把A網站的權重降下去,而後把全部權重加到B網站上去,這就是301狀態碼的做用。

域名跳轉配置文件介紹 

1.編輯配置文件的內容

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    #<Directory /data/wwwroot/111.com>
   # <FilesMatch 123.php>
        #AllowOverride AuthConfig
        #AuthName "111.com user auth"
        #AuthType Basic
        #AuthUserFile /data/.htpasswd
        # require valid-user
    #</FilesMatch>
    #</Directory>
    <IfModule mod_rewrite.c>    //須要mod_rewrite模塊支持

          RewriteEngine on    //打開rewrite功能,on就是打開 
        RewriteCond %{HTTP_HOST} !^111.com$    //定義rewrite的條件,主機名(域名)不是111.com知足條件
         RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]    //定義rewrite規則,當知足上面的條件時,這條規則纔會執行
</IfModule>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log"  common
</VirtualHost>

        1. mod_rewrite模塊,在編譯apache的時候用到了一個most,most會把大多數模塊編譯進來;若是沒有用most,沒有加任何的編譯參數,那mod_rewrite模塊也不會出現

        2. 定義rewrite的條件,主機名(域名)不是111.com知足條件。當域名不是111.com的時候,就會跳轉到111.com,也就是說如今以111.com爲主域名,它的權重大一點。若是不是 ! 歎號,表示取反的意思。HOST就是定義的域名,111.com就是HOST。!^111.com$,表示以111開頭的,到com結尾的,這樣定義是爲了包含111.com也會匹配

        3. 這個^/(.*)$ 理解爲: 非域名之外剩下的部分, / 斜槓表示域名後面的斜槓,(.*)就是 / 斜槓後的全部, $表示結束語句。

凡是以 ^/(.*)$ 域名的都會跳轉到 http://111.com/(.*),例如:^/(.*)/([1-9]+)$ 跳轉就能夠寫成 http://111.com/$1/$2 - 這個 R=301,L 在跳轉完成後還須要加一個R=301狀態碼,L 表示只跳轉一次結束 - 301是永久重定向 - 302是臨時重定向,臨時重定向在搜索引擎不太友好,它會認爲僅僅是臨時的,不過把原來域名的權重下降。

2.檢測修改的配置文件是否存在語法錯誤

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

3.從新加載配置文件

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# 

4.在測試前,先檢查是否加載了rewrite模塊

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
[root@tianqi-01 ~]# 

5. 這裏會看到並無加載rewrite模塊,因此還須要到配置文件中打開rewrite模塊 

6. 若是沒有加載,還須要打開rewrite模塊,由於在編譯的時候指定了most,因此rewrite模塊必定存在 

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf 

搜索/rewrite ,找到這一行,並將前面的# 號去掉,顯示爲

LoadModule rewrite_module modules/mod_rewrite.so

7.檢測修改的配置文件是否存在語法錯誤,並從新加載配置文件

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

8.再來查看rewrite模塊

[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -M |grep rewrite
 rewrite_module (shared)
[root@tianqi-01 ~]# 

9.查看虛擬主機配置文件

[root@tianqi-01 ~]# cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

10.開始測試 curl -x可使用127.0.0.1也能夠是192.168.11.136 進行測試,由於80端口監聽的是全網。 

什麼是監聽全網,就是這臺主機上全部的網卡的IP,80端口默認是:::80,表示監聽全網。

[root@tianqi-01 ~]# netstat -lntp 
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      767/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      999/master          
tcp6       0      0 :::80                   :::*                    LISTEN      12084/httpd         
tcp6       0      0 :::22                   :::*                    LISTEN      767/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      999/master          
[root@tianqi-01 ~]# 

11. 在虛擬主機中添加2111.com.cn ,而後在從新檢查語法錯誤,在加載配置文件

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com 2111.com.cn
   # <Directory /data/wwwroot/111.com>
   #<FilesMatch 123.php>
        #AllowOverride AuthConfig
        #AuthName "111.com user auth"
        #AuthType Basic
        #AuthUserFile /data/.htpasswd
        #require valid-user
   #</FilesMatch>
   #</Directory>
   <IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteCond %{HTTP_HOST} !^111.com$
   RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
   </IfModule>

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

12.訪問2111.com.cn

curl -x192.168.11.136:80 2111.com.cn -I - -I參數,表示不顯示內容,只看狀態碼

[root@tianqi-01 ~]# curl -x192.168.11.136:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Fri, 02 Mar 2018 13:34:59 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Location: http://www.123.com/
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

13.會看到狀態碼爲301

14. 查看2111.com.cn網站的內容

[root@tianqi-01 ~]# curl -x192.168.11.136:80 2111.com.cn
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>301 Moved Permanently</title>
</head><body>
<h1>Moved Permanently</h1>
<p>The document has moved <a href="http://www.123.com/">here</a>.</p>
</body></html>
[root@tianqi-01 ~]# 

15.在域名後面隨便添加字符,最後仍是跳轉到111.com

[root@tianqi-01 ~]# curl -x192.168.11.136:80 2111.com.cn/adfjadfa/adfdafadfaf -I
HTTP/1.1 301 Moved Permanently
Date: Fri, 02 Mar 2018 13:49:08 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Location: http://www.123.com/adfjadfa/adfdafadfaf
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

16. 去訪問隨便輸入字符的網站,會顯示404狀態碼

404狀態碼,表示這個頁面不存在

401狀態碼,表示用戶名密碼驗證的。若是驗證不對,就是401狀態碼;驗證對了,就是200狀態碼

[root@tianqi-01 ~]# curl -x192.168.11.136:80 http://111.com/adfjadfa/adfdafadfaf -I

HTTP/1.1 404 Not Found

Date: Wed, 20 Dec 2017 23:42:08 GMT

Server: Apache/2.4.29 (Unix) PHP/5.6.30

Content-Type: text/html; charset=iso-8859-1

17.驗證正確,就會出現200驗證碼

[root@tianqi-01 ~]# curl -x127.0.0.1:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 06:15:07 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

[root@tianqi-01 ~]# 

18.修改配置文件,將將granted改爲denied,就會出現403驗證碼

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf

//搜索granted,將granted改爲denied

<Directory />
    AllowOverride none
    #Require all granted
    Require all denied

//檢測語法錯誤,並從新加載配置文件

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

[root@tianqi-01 ~]#  /usr/local/apache2.4/bin/apachectl graceful

[root@tianqi-01 ~]# curl -x192.168.11.136:80 http://111.com/123.php -I
HTTP/1.1 403 Forbidden
Date: Sun, 04 Mar 2018 01:48:51 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

[root@tianqi-01 ~]# 

19.修改配置文件,從新將denied改成granted,檢測語法錯誤並從新加載配置文件,就會出現200驗證碼

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf
[root@tianqi-01 ~]# /usr/local/apache2.4/bin/apachectl -t

Syntax OK
[root@tianqi-01 ~]#  /usr/local/apache2.4/bin/apachectl graceful
[root@tianqi-01 ~]# !curl

curl -x192.168.11.136:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sun, 04 Mar 2018 01:53:10 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

[root@tianqi-01 ~]# 

//說明:

  • -I 不顯示訪問內容,只看狀態碼
  • 404 這個頁面不存在
  • 301 永久跳轉
  • 401 用戶密碼驗證,密碼驗證不對就401,驗證對了就200
  • 403 把granted改爲denied就會403

11.21Apache訪問日誌

Apache訪問日誌

訪問日誌,就是在瀏覽器中輸入網址,每一次訪問,每一次請求,都會在服務器上生成一個日誌。

訪問日誌的做用很大,不只能夠記錄網站的訪問日誌,還能夠在網站有異常發生時幫助咱們定位問題,好比有攻擊時,是能夠經過查看日誌看到一些規律的。日誌記錄了不少系統的信息,經過讀日誌,能夠找到系統問題的緣由。而日誌有不一樣的格式,分爲common和combined,combined能夠記錄更多的信息。

1.查看默認配置文件日誌

[root@tianqi-01 ~]# ls /usr/local/apache2.4/logs/
111.com-access_log  111.com-error_log  abc.com-access_log  abc.com-error_log  access_log  error_log  httpd.pid
[root@tianqi-01 ~]# ls /usr/local/apache2.4/logs/111.com-access_log
/usr/local/apache2.4/logs/111.com-access_log
[root@tianqi-01 ~]# cat /usr/local/apache2.4/logs/111.com-access_log 
192.168.11.136 - - [02/Mar/2018:20:46:38 +0800] "GET HTTP://www.example.com/ HTTP/1.1" 200 7
192.168.11.136 - - [02/Mar/2018:20:47:29 +0800] "GET HTTP://www.example.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:49:11 +0800] "GET HTTP://111.com/ HTTP/1.1" 401 381
127.0.0.1 - - [03/Mar/2018:13:49:20 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 401 -
192.168.11.1 - tianqi [03/Mar/2018:13:49:37 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:14 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:16 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:17 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:17 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:18 +0800] "GET / HTTP/1.1" 200 7
192.168.11.1 - tianqi [03/Mar/2018:13:50:19 +0800] "GET / HTTP/1.1" 200 7
127.0.0.1 - tianqi [03/Mar/2018:13:51:35 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 200 -
127.0.0.1 - tianqi [03/Mar/2018:13:52:04 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 401 -
127.0.0.1 - tianqi [03/Mar/2018:13:56:38 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:56:56 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:57:05 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 200 -
127.0.0.1 - - [03/Mar/2018:13:57:45 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 401 -
127.0.0.1 - tianqi [03/Mar/2018:13:58:26 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 -
192.168.11.136 - - [03/Mar/2018:14:12:59 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:13 +0800] "GET HTTP://2111.com.cn/ HTTP/1.1" 301 223
192.168.11.136 - - [03/Mar/2018:14:13:27 +0800] "HEAD HTTP://2111.com.cn/adfjadfa/adfdafadfaf HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:44 +0800] "HEAD http://111.com/adfjadfa/adfdafadfaf HTTP/1.1" 404 -
127.0.0.1 - - [03/Mar/2018:14:15:07 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
[root@tianqi-01 ~]# 

查看111.com訪問日誌,日誌裏面的HEAD都是curl命令致使的,日誌裏面的GET就是不加-I參數的,再加上-I只會輸出狀態碼,並不會把內容GET下來。

日誌裏面包含來源的IP、時間、行爲、訪問的域名、HTTP的版本1.一、狀態碼以及大小。

上面輸出的日誌太過簡單,不是咱們所須要的日誌格式,日誌其實能夠自定義格式的。

1. 打開主配置文件

[root@tianqi-01 ~]# vim /usr/local/apache2.4/conf/httpd.conf

//不更改信息 搜索 /LogFormat ,看到的就是文件格式,這裏提供了兩個文件的格式,默認使用的是common 

LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

默認使用的是common

%h,來源IP

%l,用戶

%u,用戶名和密碼

%t,時間

%r,行爲和網址

%>s,狀態碼

%b,頁面大小

另一種形式除了顯示以上的內容,還顯示下面的內容。

{Referer}i 表示訪問頁面的上一個所訪問的頁面

%{User-Agent}i 表示用戶代理,是經過瀏覽器訪問,仍是curl命令訪問,最終得到網站的內容,瀏覽器就是用戶代理。

2. 打開虛擬機配置文件 

[root@tianqi-01 ~]#  vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

//把common日誌格式格式改爲combined日誌格式,示例以下:

CustomLog "logs/111.com-access_log" combined

3. 檢查配置文件是否存在語法錯誤,並重啓配置文件

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

4. 使用curl命令訪問網址

[root@tianqi-01 ~]# curl -x192.168.11.136:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 06:31:24 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

[root@tianqi-01 ~]# 

5. 再用瀏覽器訪問下網址

[root@tianqi-01 ~]# curl -x 127.0.0.1:80 http://111.com/123.php -I
HTTP/1.1 200 OK
Date: Sat, 03 Mar 2018 06:35:36 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

6.查看日誌文件 - 會看到日誌文件豐富了

[root@tianqi-01 ~]# tail /usr/local/apache2.4/logs/111.com-access_log
127.0.0.1 - - [03/Mar/2018:13:56:56 +0800] "GET HTTP://111.com/ HTTP/1.1" 200 7
127.0.0.1 - - [03/Mar/2018:13:57:05 +0800] "HEAD HTTP://111.com/ HTTP/1.1" 200 -
127.0.0.1 - - [03/Mar/2018:13:57:45 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 401 -
127.0.0.1 - tianqi [03/Mar/2018:13:58:26 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 -
192.168.11.136 - - [03/Mar/2018:14:12:59 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:13 +0800] "GET HTTP://2111.com.cn/ HTTP/1.1" 301 223
192.168.11.136 - - [03/Mar/2018:14:13:27 +0800] "HEAD HTTP://2111.com.cn/adfjadfa/adfdafadfaf HTTP/1.1" 301 -
192.168.11.136 - - [03/Mar/2018:14:13:44 +0800] "HEAD http://111.com/adfjadfa/adfdafadfaf HTTP/1.1" 404 -
127.0.0.1 - - [03/Mar/2018:14:15:07 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 -
127.0.0.1 - - [03/Mar/2018:14:35:36 +0800] "HEAD http://111.com/123.php HTTP/1.1" 200 - "-" "curl/7.29.0"
[root@tianqi-01 ~]# 

友情連接:阿銘Linux

相關文章
相關標籤/搜索