5.9LAMP-Apache默認虛擬主機及用戶認證和訪問日誌、域名跳轉、日誌切割、靜態元素過時時間、日誌不記錄靜態文件

 

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

1. windows下host用法

第一步:按下圖找到host文件shell

第二步:按下圖添加域名;apache

第三步:ping 設置的域名是否通暢;vim

第四步:在瀏覽器訪問域名

2. linux下配置虛擬主機

當虛擬主機配置文件生效後,主配置文件中所定義的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用戶認證

1.全局用戶認證

在虛擬主機配置文件 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  瀏覽器上一次所訪問的網址

3. 更改日誌格式

再次打開虛擬主機,配置文件: 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秒

相關文章
相關標籤/搜索