11月15日任務
11.18 Apache用戶認證
11.19/11.20 域名跳轉
11.21 Apache訪問日誌
1.Apache用戶認證
- vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那個虛擬主機編輯成如下內容
- <VirtualHost *:80>
- DocumentRoot "/data/wwwroot/www.123.com"
- ServerName www.123.com
- <Directory /data/wwwroot/www.123.com> //指定認證的目錄
- 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 用Apache自帶的密碼工具生成一個密碼
- 重新加載配置-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 指定用戶名和密碼
實驗:一
- 編輯vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那個虛擬主機編輯成如下內容
- 生成密鑰,-m 是指定加密類型,-c是創建
- 重新加載一下
- 訪問一下,提示要用戶認證
- -u 指定用戶認證密碼與用戶
實驗:二
- 還可以針對單個文件進行認證
- <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>
- 配置更改一下
- 重新加載一下
- 編輯一下123.PHP文件
- 訪問其他的不會401,訪問123.php纔會認證
2. 域名跳轉
- 需求,把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
實驗:一
- 編輯一下配置
- 重新加載一下
- 檢查這個模塊是否加載,沒有加載的話,就編輯這個文件
- /rewrite 搜索一下,取消#號,打開模塊
- 重新加載一下這個模塊
- 測試一下,301就表示是域名跳轉的
3.Apache訪問日誌
示例一:
- 訪問日誌記錄用戶的每一個請求
- vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat
- LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined 會記錄referer和user-agent。
- 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 定義爲記錄referer和user-agent格式的日誌
- </VirtualHost>
- 重新加載配置文件 -t,graceful
- curl -x127.0.0.1:80 -I 123.com
- tail /usr/local/apache2.4/logs/123.com-access_log
- 查看一下logs日誌
- /LogFormat 搜索一下,日誌的格式