1. 程式人生 > >apache用戶認證及域名跳轉、訪問日誌

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

20180529

一、apache的用戶認證
vim /usr/local/apache/conf/extra/httpd-vhosts.conf //把11.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>
修改完成後,要生成密碼文件
2?生成密碼文件: /usr/local/apache/bin/htpasswd -c -m /data/.htpasswd riven
然後輸入你想要的密碼。然後就會生成密碼文件
-c創建
-m 指定加密類型
如果再要增中用戶,就不用-c選項了
重新加載配置/usr/local/apache/bin/apachectl -t , graceful
綁定hosts,瀏覽器測試

然後我們用curl -x192.168.1.31:80 11.com 去訪問,提示401,說明你訪問的內容需要做用戶認證

我們如何用curl -x 去訪問用戶認證的網站呢?
curl -x192.168.1.31:80 -uriven:1122 11.com
提示200表示訪問成功
3、針對單個文件進行認證
<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>

二、域名跳轉(301永久重定向,提高權重)
1?例:把11.com域名跳轉到www.123.com,配置如下:

<VirtualHost :80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName 11.com
ServerAlias 123.com
<IfModule mod_rewrite.c> //需要mod_rewrite模塊支持
RewriteEngine on //打開rewrite功能
RewriteCond %{HTTP_HOST} !^11.com$ //定義rewrite的條件,主機名(域名)不是11.com滿足條件
RewriteRule ^/(.
)$ http://11.com/$1 [R=301,L] //定義rewrite規則,當滿足上面的條件時,這條規則才會執行
</IfModule>
</VirtualHost>
302就是臨時重定向。
/usr/local/apache/bin/apachectl -t
/usr/local/apache/bin/apachectl -M |grep rewrite 查看有沒有加載rewrite模塊
若無該模塊,需要編輯配置文件httpd.conf,刪除rewrite_module (shared) 前面的#
2?測試
curl -x127.0.0.1:80 -I 123.com -I //狀態碼為301

三、apache訪問日誌
1?訪問日誌記錄用戶的每一個請求
2?給日誌定義格式
vim /usr/local/apache/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
(User-Agent 用戶代理,Referer 就是瀏覽器上一次所訪問的網址。)

把虛擬主機配置文件改成如下:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName 11.com
ServerAlias 123.com
CustomLog "logs/11.com-access_log" combined
</VirtualHost>
重新加載配置文件 -t,graceful
curl -x127.0.0.1:80 -I 123.com
tail /usr/local/apache2.4/logs/123.com-access_log

頭暈,明天再重新寫一次!感覺內容太多

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