Apache用戶認證、域名跳轉及Apache訪問日誌

httpd的用戶認證目錄

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

    <VirtualHost *:80>html

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

        ServerName www.123.comvim

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

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

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

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

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

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

        </Directory>

    </VirtualHost>

    • /usr/local/apache2/bin/htpasswd -c -m /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. 編輯vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 文件 

[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf在文件中編輯配置文件,將如下內容添加到第二段代碼中——>由於第一個虛擬主機是默認虛擬主機

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

AllowOverride AuthConfig //這個至關於打開認證的開關,若是沒有這一行,那就至關於沒有開啓 AuthName "111.com user auth" //自定義認證的名字,做用不大 

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

AuthUserFile /data/.htpasswd //指定密碼文件所在位置——>這裏須要指定一個用戶名的密碼文件 require valid-user //指定須要認證的用戶爲所有可用用戶 

</Directory>

更改完的代碼 <VirtualHost *:80>

DocumentRoot "/data/wwwroot/abc.com"

ServerName abc.com

ServerAlias www.abc.com www.123.com

ErrorLog "logs/abc.com-error_log"

CustomLog "logs/abc.com-access_log" common

</VirtualHost>

<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

AuthUserFile /data/.htpasswd
require valid-user

</Directory>

ErrorLog "logs/111.com-error_log"

CustomLog "logs/111.com-access_log" common

</VirtualHost>

而後保存退出

2,用apache自帶的命令htpasswd建立
-  /usr/local/apache2/bin/htpasswd -c -m /data/.htpasswd liyueyong 
    - -c參數,就是建立
    -m參數,使用MD5加密
    - /data/.htpasswd,指定密碼文件所在位置
    - useradd liyueyong,(這裏的useradd 是不須要寫的,直接寫用戶名就行)加一個用戶名(密碼爲123456)

[root@yong-02 ~]# /usr/local/apache2/bin/htpasswd -c -m /data/.htpasswd liyueyong

New password: Re-type new password: Adding password for user liyueyong 

- 如果提示錯誤,那麼先查看文件是否生成,而後查看文件內容,再去排查其餘錯誤
3. 查看 /data/.htpasswd 文件內容
    能看到文件中有一行,以 : 冒號爲分割。左邊是用戶名,右邊是MD5加密的密碼
    由於是用 -m 指定了加密的類型

  •  查看是否生成密碼文件
[root@yong-02 ~]# cat /data/.htpasswd 
liyueyong:$apr1$FDmXiDe8$cZ4SWR67.lo5id8g0TbM71

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

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

 5. 查看文件內容,會發現又增長了一行密碼

[root@yong-02 ~]# cat /data/.htpasswd 
liyueyong:$apr1$FDmXiDe8$cZ4SWR67.lo5id8g0TbM71
zhangsan:$apr1$R/2ZFTiZ$aKM.cAWjH/hY9M7n7I2iG0

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

[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful

 7. 測試,訪問111.com的時候,會提示401狀態碼
    401狀態碼,說明訪問的內容須要作用戶認證

[root@yong-02 ~]# 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@yong-02 ~]# curl -x127.0.0.1:80 111.com -I 
HTTP/1.1 401 Unauthorized Date: Tue, 29 May 2018 21:34:22 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

192.168.180.135 www.abc.com www.123.com 111.com

9. 會發現須要輸入用戶名,和密碼

### curl輸入用戶名和密碼    - -u參數,而後加用戶名,再:冒號密碼

[root@yong-02 ~]# curl -x127.0.0.1:80 -uliyueyong:123456 111.com -I
HTTP/1.1 200 OK
Date: Tue, 29 May 2018 15:23:11 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

## 針對某一個訪問的進行認證
- 針對 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  vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf

未更改前

<VirtualHost *:80> 

DocumentRoot "/data/wwwroot/abc.com" 

ServerName abc.com 

ServerAlias www.abc.com www.123.com 

ErrorLog "logs/abc.com-error_log" 

CustomLog "logs/abc.com-access_log" common 

</VirtualHost>

<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 

AuthUserFile /data/.htpasswd 

require valid-user 

</Directory> 

ErrorLog "logs/111.com-error_log" 

CustomLog "logs/111.com-access_log" common 

</VirtualHost>

更改後

<VirtualHost *:80> 

DocumentRoot 

"/data/wwwroot/abc.com" 

ServerName abc.com 

ServerAlias www.abc.com www.123.com 

ErrorLog "logs/abc.com-error_log" 

CustomLog "logs/abc.com-access_log" common 

</VirtualHost>

<VirtualHost *:80> 

DocumentRoot "/data/wwwroot/111.com" 

ServerName 111.com 

ServerAlias www.example.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@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful

3. 編輯123.php文件 

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

在配置文件中寫入

<?php echo "123.php"; 並保存退出 

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

[root@yong-02 ~]# curl -x127.0.0.1:80 111.com -I

HTTP/1.1 200 OK
Date: Tue, 29 May 2018 15:39:47 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Length: 7
Content-Type: text/html; charset=UTF-8
 

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

[root@yong-02 ~]# curl -x127.0.0.1:80 111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Tue, 29 May 2018 15:40:19 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
WWW-Authenticate: Basic realm="111.com user auth"
Content-Type: text/html; charset=iso-8859-1
 

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

[root@yong-02 ~]# curl -x127.0.0.1:80 -uliyueyong:123456 111.com/123.php -I
HTTP/1.1 200 OK
Date: Tue, 29 May 2018 15:42:07 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
X-Powered-By: PHP/7.1.6
Content-Type: text/html; charset=UTF-8

 

域名跳轉

  • 需求,把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狀態碼的做用。

域名跳轉配置文件介紹

  • 加入到配置文件的內容
<IfModule mod_rewrite.c>
       #須要mod_rewrite模塊支持
        RewriteEngine on
       #打開rewrite功能
        RewriteCond %{HTTP_HOST} !^111.com$
       #定義rewrite的條件,主機名(域名)不是111.com知足條件
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L]
       #定義rewrite規則,當知足上面的條件時,這條規則纔會執行
      </IfModule>
  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/(.)
  • 這個 R=301,L 在跳轉完成後還須要加一個R=301狀態碼,L 表示只跳轉一次結束
  • 301是永久重定向
  • 302是臨時重定向,臨時重定向在搜索引擎不太友好,它會認爲僅僅是臨時的,不過把原來域名的權重下降

域名重定向實驗操做

  • 打開虛擬主機配置文件,並修改配置文件
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

更改前
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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>

更改後
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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功能
        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>

而後保存退出
  • 檢測修改的配置文件是否存在語法錯誤
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
  • 從新加載配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 在測試前,先檢查是否加載了rewrite模塊
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -M |grep rewrite
  • 這裏會看到並無加載rewrite模塊,因此還須要到配置文件中打開rewrite模塊
  • 若是沒有加載,還須要打開rewrite模塊,由於在編譯的時候指定了most,因此rewrite模塊必定存在
[root@yong-02 ~]# vim /usr/local/apache2/conf/httpd.conf

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

LoadModule rewrite_module modules/mod_rewrite.so
而後保存退出
  • 檢測修改的配置文件是否存在語法錯誤,並從新加載配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 再來查看rewrite模塊
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -M |grep rewrite
 rewrite_module (shared)
  • 查看虛擬主機配置文件
[root@yong-02 ~]# cat /usr/local/apache2/conf/extra/httpd-vhosts.conf 
# Virtual Hosts
#
# Required modules: mod_log_config

# If you want to maintain multiple domains/hostnames on your
# machine you can setup VirtualHost containers for them. Most configurations
# use only name-based virtual hosts so the server doesn't need to worry about
# IP addresses. This is indicated by the asterisks in the directives below.
#
# Please see the documentation at 
# <URL:http://httpd.apache.org/docs/2.4/vhosts/>
# for further details before you try to setup virtual hosts.
#
# You may use the command line option '-S' to verify your virtual host
# configuration.

#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
# The first VirtualHost section is used for all requests that do not
# match a ServerName or ServerAlias in any <VirtualHost> block.
#
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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> 
       #須要mod_rewrite模塊支持
        RewriteEngine on 
       #打開rewrite功能
        RewriteCond %{HTTP_HOST} !^111.com$  
       #定義rewrite的條件,主機名(域名)不是111.com知足條件
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] 
       #定義rewrite規則,當知足上面的條件時,這條規則纔會執行
      </IfModule>
   
    ErrorLog "logs/dummy-host2.example.com-error_log"
    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
  • 開始測試
  • curl -x可使用127.0.0.1也能夠是192.168.180.135 進行測試,由於80端口監聽的是全網 什麼是監聽全網
    • 全網,就是這臺主機上全部的網卡的IP
  • 80端口默認是:::80,表示監聽全網
[root@yong-02 ~]# 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      1019/sshd           
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1254/master         
tcp6       0      0 :::80                   :::*                    LISTEN      1352/httpd          
tcp6       0      0 :::22                   :::*                    LISTEN      1019/sshd           
tcp6       0      0 ::1:25                  :::*                    LISTEN      1254/master
  • 在虛擬主機中添加2111.com.cn ,而後在從新檢查語法錯誤,在加載配置文件
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t 
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 訪問2111.com.cn
  • curl -x192.168.180.135:80 2111.com.cn -I
    • -I參數,表示不顯示內容,只看狀態碼
[root@yong-02 ~]# curl -x192.168.180.135:80 2111.com.cn -I
HTTP/1.1 301 Moved Permanently
Date: Tue, 29 May 2018 16:23:52 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1
  • 會看到狀態碼爲301
  • 查看2111.com.cn網站的內容
[root@yong-02 ~]# curl -x192.168.180.135: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://111.com/">here</a>.</p>
</body></html>
  • 在域名後面隨便添加字符,最後仍是跳轉到111.com
[root@yong-02 ~]# curl -x192.168.180.135:80 2111.com.cn/dsfasdfasd
<!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://111.com/dsfasdfasd">here</a>.</p>
</body></html>
  • 去訪問隨便輸入字符的網站,會顯示404狀態碼
  • 404狀態碼,表示這個頁面不存在
  • 401狀態碼,表示用戶名密碼驗證的。若是驗證不對,就是401狀態碼;驗證對了,就是200狀態碼
[root@yong-02 ~]# curl -x192.168.180.135:80 http://111.com/dsfasdfasd -I
HTTP/1.1 404 Not Found
Date: Tue, 29 May 2018 16:25:39 GMT
Server: Apache/2.4.33 (Unix) PHP/7.1.6
Content-Type: text/html; charset=iso-8859-1

 

Apache訪問日誌

訪問日誌目錄概要

  • 訪問日誌記錄用戶的每個請求
  • vim /usr/local/apache2/conf/httpd.conf //搜索LogFormat
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
  • 把虛擬主機配置文件改爲以下:
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/www.123.com"
    ServerName www.123.com
    ServerAlias 123.com
    CustomLog "logs/123.com-access_log" combined
</VirtualHost>
  • 從新加載配置文件/usr/local/apache2/bin/apachectl  -t,graceful
  • curl -x127.0.0.1:80 -I 123.com
  • tail /usr/local/apache2/logs/123.com-access_log

訪問日誌

  • 訪問日誌,就是在瀏覽器中輸入網址,每一次訪問,每一次請求,都會生成一個日誌
  • 查看apache2.4的日誌
[root@yong-02 ~]# ls /usr/local/apache2/logs/
abc.com-access_log  access_log                          dummy-host2.example.com-error_log  httpd.pid
abc.com-error_log   dummy-host2.example.com-access_log  error_log
  • 查看111.com訪問日誌 dummy-host2.example.com-access_log(沒更名致使)
    • 日誌裏面的HEAD都是curl命令致使的
    • 日誌裏面的GET就是不加 -I參數的,在加上-I只會輸出狀態碼,並不會把內容GET下來
    • 日誌裏面包含 來源的IP,時間 , 行爲 ,訪問的域名 , HTTP的版本1.1 ,狀態碼 , 大小
[root@yong-02 ~]# tail /usr/local/apache2/logs/dummy-host2.example.com-access_log 
192.168.180.135 - - [30/May/2018:00:12:03 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:13:38 +0800] "HEAD HTTP://111.com/123.php HTTP/1.1" 200 -
192.168.180.135 - - [30/May/2018:00:23:52 +0800] "HEAD HTTP://2111.com.cn/ HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:24:13 +0800] "GET HTTP://2111.com.cn/ HTTP/1.1" 301 223
192.168.180.135 - - [30/May/2018:00:24:38 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.135 - - [30/May/2018:00:25:12 +0800] "HEAD HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:25:39 +0800] "HEAD http://111.com/dsfasdfasd HTTP/1.1" 404 -
192.168.180.1 - liyueyong [30/May/2018:00:26:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:26:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:26:56 +0800] "GET /123.php HTTP/1.1" 200 7

定義日誌文件格式

  • 上面輸出的日誌太過簡單,不是咱們所須要的日誌格式,日誌其實能夠自定義格式的
  • 打開主配置文件
  • 默認使用的是common
  • %h,來源IP
  • %l,用戶
  • %u,用戶名和密碼
  • %t,時間
  • %r,行爲和網站
  • %>s,網站狀態碼
  • %b,頁面大小
  • {Referer}i 表示訪問頁面的上一個所訪問的頁面
  • %{User-Agent}i 表示用戶代理,是經過瀏覽器訪問,仍是curl命令訪問,最終得到網站的內容,瀏覽器就是用戶代理
[root@yong-02 ~]# vim /usr/local/apache2/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
  • 打開虛擬機配置文件
[root@yong-02 ~]# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf 

未更改前
<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>

更改後,將common 改成 combined 

<VirtualHost *:80>
    DocumentRoot "/data/wwwroot/abc.com"
    ServerName abc.com
    ServerAlias www.abc.com www.123.com
    ErrorLog "logs/abc.com-error_log"
    CustomLog "logs/abc.com-access_log" common
</VirtualHost>

<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>
    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" combined
</VirtualHost>
  • 檢查配置文件是否存在語法錯誤,並重啓配置文件
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl -t
Syntax OK
[root@yong-02 ~]# /usr/local/apache2/bin/apachectl graceful
  • 使用curl命令訪問網址
[root@hf-01 ~]# curl -x192.168.202.150:80 http://111.com123.php -I
HTTP/1.1 200 OK
Date: Thu, 21 Dec 2017 13:50: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@hf-01 ~]#
  • 再用瀏覽器訪問下網址

  • 查看日誌文件
  • 會看到日誌文件豐富了
[root@yong-02 ~]# tail /usr/local/apache2/logs/dummy-host2.example.com-access_log 
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:12 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:13 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - - [30/May/2018:00:46:13 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - liyueyong [30/May/2018:00:46:14 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:46:18 +0800] "GET /123.php HTTP/1.1" 200 7
  • 測試{Referer}i ,在論壇新建一個筆記,測試網址,加入本身的測試連接,並在日誌中打開本身的測試連接
  • 再來查看日誌文件,會看到生成了{Referer}i
[root@yong-02 ~]# !tail 
tail /usr/local/apache2/logs/dummy-host2.example.com-access_log  
192.168.180.135 - - [30/May/2018:00:49:43 +0800] "HEAD HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 -
192.168.180.135 - - [30/May/2018:00:49:45 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.135 - - [30/May/2018:00:49:50 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.135 - - [30/May/2018:00:49:50 +0800] "GET HTTP://2111.com.cn/dsfasdfasd HTTP/1.1" 301 233
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - liyueyong [30/May/2018:00:49:56 +0800] "GET /123.php HTTP/1.1" 200 7
192.168.180.1 - - [30/May/2018:00:49:56 +0800] "GET /favicon.ico HTTP/1.1" 404 209
192.168.180.1 - liyueyong [30/May/2018:00:49:58 +0800] "GET /123.php HTTP/1.1" 200 7
相關文章
相關標籤/搜索