0509第十八次課:LAMP 2
LAMP 2
一、Apache虛擬主機
- windows的hosts檔案
-
hosts檔案路徑
-
新增一個域名
47.106.84.56 www.wxy.com www.test.com
-
測試訪問
- 開啟Apache預設虛擬主機
-
開啟預設虛擬主機需要修改apache配置檔案
vim /usr/local/apache2.4/conf/httpd.conf
去掉Include conf/extra/httpd-vhosts.conf 註釋#號
-
修改虛擬主機檔案
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改內容:
<VirtualHost *:80> DocumentRoot "/data/wwwroot/abc.com" ServerNameabc.com ServerAlias www.abc.com www.123.com ErrorLog "logs/abc.com-error_log" CustomLog "logs/abc.com-access_log" common </VirtualHost> <VirtualHost *:80> DocumentRoot "/data/wwwroot/111.com" ServerName 111.com ServerAlias www.example.com ErrorLog "logs/111.com-error_log" CustomLog "logs/111.com-access_log" common </VirtualHost>
-
建立對應的目錄和檔案
mkdir /data/wwwroot/
mkdir /data/wwwroot/abc.com
mkdir /data/wwwroot/111.com
touch /data/wwwroot/abc.com/index.html
echo "this is abc " > /data/wwwroot/abc.com/index.html
touch /data/wwwroot/111.com/index.html
echo "this is 111" > /data/wwwroot/111.com/index.html
-
測試
驗證和重新載入配置檔案
測試
curl -x 172.18.11.153:80 111.com
curl -x 172.18.11.153:80 abc.com
二、apache使用者認證
- 全域性認證
-
修改虛擬主機配置檔案
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
針對111.com修改新增以下內容
<Directory /data/wwwroot/111.com> AllowOverride AuthConfig AuthName "111.com user auth" AuthType Basic AuthUserFile /data/.htpasswd require valid-user </Directory>
-
建立密碼
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd test
-c引數建立 -m指定加密型別
-
測試
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
curl -x127.0.0.1:80 111.com
401狀態碼就是需要密碼
curl命令-u引數可以輸入賬號密碼:
curl -x 172.18.11.153:80 111.com -u test:123
test是使用者名稱,123是密碼
三、域名跳轉
域名跳轉類似於將網頁重新指向另一個網站,但區別是域名跳轉會將域名本身重新指向網站,而不使用HTML或指令碼來進行重新指向。當域名被設定為跳轉至另一網站,域名的地址將不會保留在瀏覽器的URL欄中,該欄顯示的會是新頁面的URL。如果您希望保留該欄中的URL,則需要使用隱形跳轉。
-
域名跳轉檔案配置
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
新增以下內容
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_HOST} !^111.com$ RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L] </IfModule>
和一個不存在的域名:333.com
-
開啟rewrite模組是否開啟
/usr/local/apache2.4/conf/httpd.conf
去掉註釋#
-
測試
curl -x 172.18.11.153:80 3333.com
301:永久跳轉,302:臨時跳轉,200:檔案存在,404:檔案不存在
四、Apache訪問日誌
-
日誌路徑
ll /usr/local/apache2.4/logs/
檢視
-
修改日誌格式
剛檢視的日誌資訊包含:訪問主機,使用者,時間,訪問的狀態。我們也可以自定義日誌的格式
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
把之前的common,改為combined
-
再次檢視日誌內容
五、訪問日誌不記錄靜態檔案
很多網站大多為靜態網頁,網頁內部的圖片、css檔案等同樣有其網址連結,如果不設定,這些無效的資訊也將被存入訪問日誌中,會導致訪問日誌檔案大小快速增加,佔用大量儲存空間。我們可以通過設定不記錄某些檔案來減少無效資訊,節省記憶體資源。
-
上傳一張1.png到111.com目錄
-
訪問並檢視日誌
curl -x 172.18.11.153:80 111.com/1.png -I
檢視有.png結尾的日誌
-
修改虛擬主機檔案
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
新增以下內容
SetEnvIf Request_URI ".*\.gif$" img SetEnvIf Request_URI ".*\.jpg$" img SetEnvIf Request_URI ".*\.png$" img SetEnvIf Request_URI ".*\.bmp$" img SetEnvIf Request_URI ".*\.swf$" img SetEnvIf Request_URI ".*\.js$" img SetEnvIf Request_URI ".*\.css$" img CustomLog "logs/111.com-access_log" combined env=!img
-
檢視結果
修改完成後,重新載入,再次訪問1.png,檢視日誌已經不再記錄了
六、 訪問日誌切割
如果日誌太大,總有一天會把磁碟佔滿,所以有必要每天進行日誌切割,並刪除老的日誌
- 修改配置檔案
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
修改一下內容
CustomLog "|/usr/local/apache2.4/bin/rotatelogs -l logs/111.com-access_%Y%m%d.log 86400" combined env=!img
- 引數解釋
-
/usr/local/apache2.4/bin/rotatelogs:apache自帶的分割日誌的工具
-
-l:按當前系統時間為基準進行切割(我國為CST),否則預設UTC
-
%Y%m%d表示年月日,這樣會每天記錄一個帶日期的日誌檔案
-
86400(s)表示每天都進行切割,一天24小時等於86400秒
七、靜態元素過期時間
瀏覽器訪問網站的圖片時會把靜態的檔案快取在本地電腦裡,這樣下次再訪問時就不用去遠端下載了。 但是快取多久呢?如果網站圖片更新了呢,那麼應該訪問新圖片才是。所以這就涉及到靜態檔案快取時長的問題了,也就是“快取過期時間”。
-
修改httpd.conf檔案
vim /usr/local/apache2.4/conf/httpd.conf
去掉註釋#
LoadModule expires_module modules/mod_expires.so
-
虛擬主機檔案配置
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
增加一下內容
<IfModule mod_expires.c> ExpiresActive on //開啟該功能的開關 ExpiresByType image/gif "access plus 1 days" ExpiresByType image/jpeg "access plus 24 hours" ExpiresByType image/png "access plus 24 hours" ExpiresByType text/css "now plus 2 hour" ExpiresByType application/x-javascript "now plus 2 hours" ExpiresByType application/javascript "now plus 2 hours" ExpiresByType application/x-shockwave-flash "now plus 2 hours" ExpiresDefault "now plus 0 min" </IfModule>
-
測試
瀏覽器訪問圖片,F12檢視圖片的狀態碼為200
重新整理以下檢視變成了304