vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
//把123.com那個虛擬主機編輯成如下內容,第一個是默認主機,我們修改的是第二個
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
ServerAlias www.111.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>
/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd apache
//創建並指定密碼文件所在位置並增加用戶名apache -m是指密碼MD5加密 之後創建用戶不需要加-c,因爲第一次已創建文件/usr/local/apache2.4/bin/apachectl –t
//測試語法/usr/local/apache2.4/bin/apachectl graceful
//重新加載配置文件,不會重啓服務
綁定Windows的hosts,瀏覽器測試
curl -x127.0.0.1:80 www.111.com
//狀態碼爲401(401是指需要用戶密碼驗證)curl -x127.0.0.1:80 -uapache:111111 www.111.com
//狀態碼爲200(200爲正常) -u後面的:跟密碼
用戶認證根據單個文件
還可以針對單個文件進行認證
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/111.com"
ServerName 111.com
<FilesMatch admin.php> //admin.php就是單個文件的文件名
AllowOverride AuthConfig
AuthName "111.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
</VirtualHost>