2018-3-2 Linux學習筆記
- 背景:當網站上有些內容不想讓別人訪問到時,可做用戶認證.這樣,當用戶訪問到該網站時,會彈出一個對話框要求輸入用戶和密碼,通過後才能繼續訪問網站.
- 實現用戶認證步驟:
-
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> #指定認證的目錄
AuthName "123.com user auth" #自定義認證的名字,作用不大
AuthType Basic //認證的類型 #一般為Basic
AuthUserFile /data/.htpasswd #指定密碼文件所在位置
require valid-user #指定需要認證的用戶為全部可用用戶
</Directory>
</VirtualHost> - /usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd aming #設置aming用戶的認證密碼
- /usr/local/apache2.4/bin/apachectl -t #測試語法是否正確
- /usr/local/apache2.4/bin/apachectl graceful #重新加載配置文件
- 驗證是否設置成功:
- 方法1---本地電腦瀏覽器中測試
修改本地電腦中C:\Windows\System32\drivers\etc\hosts文件,添加一行192.168.206.135 www.abc.com, 以綁定hosts(其中IP為linux虛擬機的IP),然後打開瀏覽器輸入www.abc.com測試---正常的話會彈出一對話框,要求你輸入賬戶密碼,通過後才顯示網頁. - 方法2---直接在linux虛擬機中測試:
curl -x127.0.0.1:80 -uaming:123 www.123.com #此時應正確顯示index.html中的內容.其中123為之前設定的密碼.正確狀態碼為200(此處並不會顯示)
- 還可以針對單個文件進行認證
<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> - 驗證是否設置成功:
curl -x127.0.0.1:80 www.123.com/admin.php #此時應顯示錯誤狀態碼為401
curl -x127.0.0.1:80 -uaming:123 www.123.com/admin.php #此時應正確顯示admin.php中的內容
11.19/11.20 域名跳轉
- 背景: 有時候我們的網站啟用了一個新的域名, 原來的域名不再使用了,但為了讓老用戶訪問舊域名時能自動轉到新網站上,這時我們需要做域名跳轉.
- 例子: 把www.example.com 域名跳轉到123.com
-
實現域名跳轉的配置如下:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/123.com"
ServerName 123.com
ServerAlias www.example.com 2111.com
<IfModule mod_rewrite.c> #需要mod_rewrite模塊支持
RewriteEngine on //打開rewrite功能
RewriteCond %{HTTP_HOST} !^123.com$ #定義rewrite的條件,主機名(域名)不是123.com則滿足條件
RewriteRule ^/(.)$ http://123.com/$1 [R=301,L]
#定義rewrite規則,當滿足上面的條件時,這條規則才會執行.301表示永久跳轉,302為臨時跳轉,L為Last之意,表示只跳轉一次.
</IfModule>
</VirtualHost> - /usr/local/apache2.4/bin/apachectl -M|grep -i rewrite #檢測是否加載rewrite_module (shared)模塊
- 若無該模塊,則需要編輯配置文件httpd.conf,刪除rewrite_module (shared) 前面的#以讓apache加載該模塊
- 驗證跳轉狀態(狀態碼為301)
curl -x127.0.0.1:80 -I www.example.com /
11.21 Apache訪問日誌
- 訪問日誌記錄用戶的每一個請求,apache日誌目錄為/usr/local/apache2.4/logs.
- 查看系統預定義日誌格式:
-
vim /usr/local/apache2.4/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 -
更改當前日誌格式(由common改成combined,把虛擬主機配置文件改成如下:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/123.com"
ServerName 123.com
ServerAlias www.example.com 2111.com
CustomLog "logs/123.com-access_log" combined
</VirtualHost> -
更改完重新加載配置文件:
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful - 通過curl訪問以產生日誌記錄:
curl -x127.0.0.1:80 -I 123.com # - 查看產生的日誌記錄:
tail /usr/local/apache2.4/logs/123.com-access_log
擴展學習:
apache虛擬主機開啟php的短標簽 http://ask.apelearn.com/question/5370
2018-3-2 Linux學習筆記