(五)Apache用戶認證、域名跳轉、配置訪問日誌

Apache用戶認證

介紹:Apache用戶認證也叫httpd的用戶認證,這個功能是在用戶訪問網站的時候,須要輸入用戶名密碼才能訪問php

普通用戶認證

ps:後面的操做都是咱們作了默認虛擬主機後 進行的實驗 步驟 : 1.修改配置文件(根據本身需求來,別老是無腦複製粘貼)html

#進入配置文件目錄
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 
#修改第二個虛擬主機的配置文件,內容以下
DocumentRoot "/data/wwroot/111.com"
    ServerName 111.com
    ServerAlias www.example.com
    <Directory /data/wwroot/111.com>//指定認證的目錄
        AllowOverride AuthConfig//這個至關於打開認證的開關
        AuthName "111.com user auth" //自定義認證的名字,做用不大
        AuthType Basic //認證的類型,通常爲Basic,其餘類型阿銘沒用過
        AuthUserFile /data/.htpasswd//指定密碼文件所在位置
        require valid-user//指定須要認證的用戶爲所有可用用戶
    </Directory>// 是這個以上的 下面是錯誤日誌目錄什麼的

</VirtualHost>

2.生成用戶名和密碼apache

#生成用戶名和密碼 ,/data/.htpasswd是密碼所在目錄,-c就是建立
[root@centos001 ~]# /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming
New password: 
Re-type new password: //若是兩次輸入的密碼不同會報錯
Adding password for user aming

正常的生成就和上面同樣,這裏咱們cat密碼文件所在目錄的時候出現了一個字符串,是由於咱們在生成的時候,使用了-m選項 ,它的意思是指定加密類型 。vim

[root@centos001 ~]# ls /data/.htpasswd
/data/.htpasswd
[root@centos001 ~]# cat !$
cat /data/.htpasswd
aming:$apr1$U4ET9SZV$ddKI5/2z1iKMGiMj3DSkK/
#當再次增長一個用戶的時候就不須要-c了
[root@centos001 ~]# /usr/local/apache2.4/bin/htpasswd -m /data/.htpasswd xiaowei
New password: 
Re-type new password: 
Adding password for user xiaowei
[root@centos001 ~]# cat /data/.htpasswd
aming:$apr1$U4ET9SZV$ddKI5/2z1iKMGiMj3DSkK/
xiaowei:$apr1$tri9uAul$SFEs7w3uh/5ZXmDynEYoq.
  1. 檢查書寫並重啓服務
#檢查書寫
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
AH00112: Warning: DocumentRoot [/data/wwwroot/111.com] does not exist
Syntax OK
#提示說咱們指定的 目錄不存在,那就建立一個咯
[root@centos001 ~]# mkdir /data/wwwroot/
[root@centos001 ~]# mkdir /data/wwwroot/111.com
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
#重啓服務
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl graceful

測試

  • 首先到windos下更改hosts文件
    這裏顯示401 表示須要用戶認證,就是正確的
  • 輸錯密碼的時候也會顯示401
[root@centos001 ~]# curl -x192.168.10.120:80 111.com -I
HTTP/1.1 401 Unauthorized
Date: Mon, 25 Dec 2017 23:59:01 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
  • 而後輸入用戶名和密碼,顯示200 ok 就是正確的

這裏卡了好一下子,一直報錯403 ,後來重作了一下 就行了 。應該仍是配置文件問題centos

[root@centos001 ~]# curl -x192.168.10.120:80 -uaaa:123 111.com -I
HTTP/1.1 200 OK
Date: Tue, 26 Dec 2017 04:49:34 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

單個文件認證

  • 主機上又是須要給特殊的文件設置認證,防止不相關用戶訪問 1.更改配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 
#改爲這樣
<VirtualHost *:80>
    DocumentRoot "/data/wwroot/111.com"	
    ServerAlias www.example.com
    ServerName 111.com
    # <Directory /data/wwroot/111.com> 把這個註釋掉
      <FilesMatch 123.php> //重點
 AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic 
        AuthUserFile /data/.htpasswd
        require valid-user
      <FilesMatch>
   #</Directory>

2.咱們指定了須要認證的文件,但它仍是空的沒有就寫一個瀏覽器

[root@centos001 ~]# vim /data/wwroot/111.com/123.php
#內容隨便寫寫就行

3.檢查語法並重啓dom

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

測試

  • 如今用戶登陸不用驗證了,可是訪問特定的文件的時候就須要驗證了
[root@centos001 ~]# curl -x192.168.10.120:80 111.com 
111.com[root@centos001 ~]#
#訪問指定文件,提示401
[root@centos001 ~]# curl -x192.168.10.120:80 111.com/123.php -I
HTTP/1.1 401 Unauthorized
Date: Tue, 26 Dec 2017 05:22:04 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

配置域名跳轉

  • 介紹

一個網站有多個域名,而用其中一個域名訪問網站,會轉到這個網站。這個過程叫作域名跳轉 域名跳轉的做用:
1.對seo有影響,能夠理解爲搜索排名,越多排名越高
2.好比一個域名不用了,可是有用戶啊,用域名跳轉就能,讓這些使用原來連接的用戶跳轉過去curl

步驟

  • 需求
    把123.com域名跳轉到www.123.com,配置以下
<VirtualHost *:80>
    DocumentRoot "/data/wwroot/111.com"	
    ServerAlias www.example.com 211.com
    ServerName 111.com
    <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規則,當知足上面的條件時,這條規則纔會執行
#301表示永久跳轉,L表示只跳轉一次

    </IfModule>

    ErrorLog "logs/111.com-error_log"
    CustomLog "logs/111.com-access_log" common
</VirtualHost>
  • 檢查並重啓服務
[root@centos001 ~]# /usr/local/apache2.4/bin/apachectl -t
Syntax OK
/usr/local/apache2.4/bin/apachectl graceful
  • 檢查有沒有加載rewrite模塊,這個像報錯同樣的東西不怎麼影響結果,多是個警告吧
[root@centos001 ~]# /usr/local/apache2/bin/apachectl -M |grep rewrite
httpd: Could not reliably determine the server's fully qualified domain name, using fe80::20c:29ff:fe34:4a63 for ServerName
Syntax OK
# 若是位加載的話就去下面加載一下
[root@centos001 ~]# vim /usr/local/apache2.4/conf/httpd.conf

輸入圖片說明

  • 測試用另外一個域名訪問,獲得的結果是301(永久跳轉)。用瀏覽器訪問也是直接跳轉到111.com
[root@centos001 ~]# curl -x192.168.10.120:80 www.example.com -I
HTTP/1.1 301 Moved Permanently
Date: Tue, 26 Dec 2017 06:37:23 GMT
Server: Apache/2.4.29 (Unix) PHP/7.1.6
Location: http://111.com/
Content-Type: text/html; charset=iso-8859-1

配置訪問日誌

  • 介紹

訪問日誌的做用很大,不只能記錄網站的訪問狀況,還能在網站有異常的時候幫咱們定位問題,好比有攻擊時,能經過查看日至看到一些問題ide

  • 先來查看日誌
#查看訪問日誌所在文件目錄
 cat /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
#在這個目錄下,根據虛擬主機配置文件,咱們能獲得,訪問日誌所在目錄,直接cat就能看到
[root@centos001 ~]# ls /usr/local/apache2.4/logs/
111.com-access_log  abc.com-access_log  access_log          httpd.pid
111.com-error_log   abc.com-error_log   error_log           
[root@centos001 ~]# ls /usr/local/apache2.4/logs/111.com-error_log
/usr/local/apache2.4/logs/111.com-error_log
[root@centos001 ~]# cat !$
cat /usr/local/apache2.4/logs/111.com-error_log

輸入圖片說明

編輯配置

上面的文件 看起來很不方便,並且記錄的數據還太多,不少都用不上。下面咱們將要學習,怎麼更直觀的學習

  • 1.主配置文件中定義訪問日誌的格式
#//進入主配置文件,搜索LogFormat 
vim /usr/local/apache2.4/conf/httpd.conf  
#獲得
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common

解說:

兩個格式的日誌,建議選擇第一個,信息記錄更全面。 %h爲訪問網站的IP;%l爲遠程登陸名;%u爲用戶名,使用認證登陸時,就是認證的用戶名;%t爲時間;%r爲請求動做;%s爲請求的狀態碼,%>s爲最後的狀態碼;%b爲傳輸數據的大小;%{Referer}意爲由什麼地址過來的;%{User-Agent}i爲瀏覽器標識

  • 2.編輯虛擬主機配置文件 讓訪問日誌顯示
#進入虛擬主機配置文件
[root@centos001 ~]# vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf

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

3.查看新的訪問日誌建議先用瀏覽器跳轉幾下
這裏能看到不少重要的東西 訪問地址 源地址 訪問設備 瀏覽器都知道是什麼

#查看
[root@centos001 ~]# tail /usr/local/apache2.4/logs/111.com-access_log
#輸出
192.168.10.120 - - [26/Dec/2017:16:26:56 +0800] "HEAD HTTP://www.example.com/ HTTP/1.1" 30
192.168.10.1 - aaa [26/Dec/2017:16:27:30 +0800] "GET / HTTP/1.1" 200 7 "-" "Mozilla/5.0 (W9.84 Safari/537.36"
···

擴展

apache虛擬主機開啓php的短標籤
http://ask.apelearn.com/question/5370

相關文章
相關標籤/搜索