介紹: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.
#檢查書寫 [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
[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
這裏卡了好一下子,一直報錯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
[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
<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
[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
[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
上面的文件 看起來很不方便,並且記錄的數據還太多,不少都用不上。下面咱們將要學習,怎麼更直觀的學習
#//進入主配置文件,搜索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爲瀏覽器標識
#進入虛擬主機配置文件 [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