5月9日任務:
11.16/11.17 Apache默認虛擬主機
11.18 Apache用戶認證
11.19/11.20 域名跳轉
11.21 Apache訪問日誌
11.22 訪問日誌不記錄靜態文件
11.23 訪問日誌切割
11.24 靜態元素過時時間javascript
apache2編譯安裝的另一種方法:php
下載apr-1.六、apr-util-1.6以及httpd-2.4,分別解壓三個源碼包
把apr-1.6.3 放到httpd源碼包的/srclib/下,更名apr
把apr-util-1.6.1 放到httpd源碼包的/srclib/下,更名apr-util4)編譯參數./configure --prefix=/dir/ --enable-so --enable-mpms-shared=all --with-mpm=event --enable-mods-shared=most --with-included-apr
說明:這裏的/dir/爲apache安裝路徑,根據需求定目錄
apache的一些學習文檔: https://github.com/aminglinux/apachecss
1、Apache默認虛擬主機java
一臺服務器能夠訪問多個網站,每一個網站都是一個虛擬主機linux
概念:域名(主機名)、DNS、解析域名、hosts git
任何一個域名解析到這臺機器,均可以訪問的虛擬主機就是默認虛擬主機github
第一步:按下圖找到host文件shell
第二步:按下圖添加域名;apache
第三步:ping 設置的域名是否通暢;vim
第四步:在瀏覽器訪問域名
當虛擬主機配置文件生效後,主配置文件中所定義的DocumentRoot會失效
虛擬主機配置文件一旦打開,能夠定義多個VirtualHost,每一個VirtualHost表明一個站點,都表明一個虛擬主機
第一步:編輯配置文件httpd.conf,去掉如下的#號,使虛擬主機的配置文件生效
去掉#號 加載虛擬主機的配置文件
第二步:進入虛擬主機配置文件中;
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf httpd-vhosts.conf虛擬主機配置文件
//改成以下
第三步: 建立和虛擬主機對應的站點根目錄,以及新建相應index.php
並在對應站點下建立index.php
usr/local/apache2.4/bin/apachectl -t //須要檢查配置語法
/usr/local/apache2.4/bin/apachectl graceful //加載
第四步:ping 設置的www.abc.com,此時明顯是外網的域名;
vi /etc/hosts hosts文件,訪問本機上的abc.com能夠編輯hosts文件,還可使用curl
第五步:用 curl -x192.168.37.3:80 abc.com 來測試
不論把什麼域名指向過來都會訪問到abc.com,abc.com是虛擬主機配置文件中配置的第一個虛擬主機,它就是默認虛擬主機,不管訪問什麼域名,只要解析到這個ip上都會訪問該網站對應的虛擬主機配置
2、Apache用戶認證
在虛擬主機配置文件 httpd-vhosts.conf ,配置另外一臺虛擬主機信息
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
如下是配置文件中,第二個虛擬主機的配置:
建立密碼htpasswd命令
在建立密碼文件前先要了解htpasswd命令: htpasswd命令是Apache的Web服務器內置工具,用於建立和更新儲存用戶名、域和用戶基本認證的密碼文件。
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd tobe
c是creat,建立的意思;
m是md5加密
指定密碼文件錯在位置 /data/.htpasswd
tobe 用戶名
再增長一個用戶,就不用再添加-c;注意:若是繼續用 -c ,那麼就會把以前的用戶名覆蓋;
鏈接測試此虛擬,
/usr/local/apache2.4/bin/apachectl -t //更改配置後,須要檢查配置語法
/usr/local/apache2.4/bin/apachectl graceful //須要加載
curl -x127.0.0.1:80 111.com 401報錯
curl命令的 -I 參數,顯示 http response 的頭信息,此時須要用戶認證
瀏覽器中訪問,須要在windows中的hosts中設置,須要輸入用戶名密碼驗證
訪問成功
使用curl輸入用戶名和密碼
curl命令的 -u 參數,能夠登陸用戶名,及密碼;
curl -x127.0.0.1:80 -utobe:tobe 111.com -I 此處用戶名和密碼都是tobe
故意輸錯密碼,就會報錯;
2. 單個文件進行認證
在虛擬主機配置文件 httpd-vhosts.conf ,按下面修改信息;
<FilesMatch 123.php> 指定訪問123.php時才認證
/usr/local/apache2.4/bin/apachectl -t //更改配置後,須要檢查配置語法
/usr/local/apache2.4/bin/apachectl graceful //須要加載
vim /data/wwwroot/111.com/123.php
curl -x127.0.0.1:80 111.com 先測試111.com,訪問成功
curl -x127.0.0.1:80 111.com/123.php -I
由於給123.php加了認證,因此訪問時報錯
curl -x127.0.0.1:80 -utobe:tobe 111.com/123.php -I 加上用戶名和密碼能夠訪問
3、 域名跳轉
域名跳轉相似於將網頁從新指向另外一個網站,但區別是域名跳轉會將域名自己從新指向網站,而不使用HTML或腳原本進行從新指向。當域名被設置爲跳轉至另外一網站,域名的地址將不會保留在瀏覽器的URL欄中,該欄顯示的會是新頁面的URL。若是您但願保留該欄中的URL,則須要使用隱形跳轉。
配置域名跳轉
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
建議設置狀態碼爲301,L只跳轉一次,結束
查看apache是否加載了rewrite模塊,若無該模塊,須要編輯配置文件
/usr/local/apache2.4/bin/apachectl -M|grep -i rewrite
修改配置文件/httpd.conf ,把rewrite模塊 加載上,LoadModule rewrite_module modules/mod_rewrite.so前面#號去掉
vim /usr/local/apache2.4/conf/httpd.conf
加載出來了
進行測試:
查看網絡連接, :::80 表明全網都支持跳轉;
顯示301碼,會跳轉,moved到111.com
curl -x192.168.37.3:80 2111.com.cn/werewrwe -I 2111.com下面,不存在的域名,只是顯示跳轉
curl -x192.168.37.3:80 111.com/123.php -I 真實存在的域名,會顯示200狀態碼;
4、Apache訪問日誌
1.Apache訪問日誌所在位置
打開日誌的目錄,/usr/local/apache2.4/logs/
2. 查看日誌格式
打開apache主配置文件,查找日誌的格式內容
vim /usr/local/apache2.4/conf/httpd.conf //搜索LogFormat
兩個日誌格式common和combined,默認使用的是common
User-Agent 用戶代理
Referer 瀏覽器上一次所訪問的網址
再次打開虛擬主機,配置文件: vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 把以前的common,改成combined
從新加載虛擬主機配置文件,測試123.php,目的是爲了生成新的日誌
再次查看新生成的日誌
5、訪問日誌不記錄靜態文件
不少網站大多爲靜態網頁,網頁內部的圖片、css文件等一樣有其網址連接,若是不設置,這些無效的信息也將被存入訪問日誌中,會致使訪問日誌文件大小快速增長,佔用大量存儲空間。咱們能夠經過設置不記錄某些文件來減小無效信息,節省內存資源。
先訪問 .jpg的文件;不管有無此文件,它都會產生日誌;
curl -x192.168.94.3:80 111.com/asdqwe.jpg -I
tail /usr/local/apache2.4/logs/111.com-access_log
最後一條 .jpg的日誌,就是咱們剛纔訪問的記錄
在配置虛擬主機的配置文件: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
上面的模塊釋義: 將全部訪問圖片的請求定義爲變量img,在訪問記錄(日誌)中將其排除便可。從新加載後使用curl訪問img變量中所指定格式的文件內容時將不會產生訪問記錄。img是變量。
此時再訪問 curl -x192.168.94.3:80 111.com/qwedqwe.jpg -I的文件,日誌沒有記錄,說明配置成功
cd /data/wwwroot/111.com/ 使用xshell在這目錄下上傳一個圖片image.jpg
curl -x192.168.94.3:80 111.com/image.jpg -I 在請求該文件
tail /usr/local/apache2.4/logs/111.com-access_log 依然不會記錄
6、訪問日誌切割
日誌一直記錄總有一天會把整個磁盤佔滿,因此有必要讓它自動切割,並刪除老的日誌文件
首先配置文件,按下面更改 訪問日誌(CustomLog)的內容
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
先指定一個工具 /usr/local/apache2/bin/rotatelogs httpd自帶的日誌切割工具
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(小寫L)參數按當前系統時間爲基準進行切割(我國爲CST),不然默認UTC
%Y%m%d表示年月日,這樣會天天記錄一個帶日期的日誌文件,更方便
86400(s)表示天天都進行切割,一天24小時等於86400秒
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
ls /usr/local/apache2.4/logs/
curl -x192.168.44.3:80 111.com/123.php 訪問一次123.php,生產日誌文件,查看也是有內容的
7、靜態元素過時時間
配置靜態元素過時時間
瀏覽器訪問網站的圖片時會把靜態的文件緩存在本地電腦裏,這樣下次再訪問時就不用去遠程下載了
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>
/usr/local/apache2.4/bin/apachectl -M |grep expires 查看expaire模塊是否打開,此時沒有打開
在主配置文件,去掉#號,啓用expires模塊 vim /usr/local/apache2.4/conf/httpd.conf
LoadModule expires_module modules/mod_expires.so //去掉#,加載模塊
/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
/usr/local/apache2.4/bin/apachectl -M |grep expires
名詞 |
釋義 |
acess |
表示從訪問時間開始 |
now |
表示按當前時間開始 |
plus |
在前面的時間基礎上加上 |
1 hours/days |
表示文件的生命週期 |
語句:access plus 24 hours 指該文件從訪問的時間開始24小時內有效,無需從新獲取
curl -x192.168.44.3:80 111.com/qq.jpg -I 相差24小時,86400秒