Apache配置域名跳轉、日誌切割、靜態緩存、防盜鏈

·/usr/local/apache2/bin/apachectl -M:查看安裝了哪些模塊 

·/usr/local/apache/bin/apachectl  -V:查看使用的模式    
·/usr/local/apache2/bin/apachectl -t:檢查語法錯誤   

·/usr/local/apache2/bin/apachectl -l:查看安裝的庫文件

·/usr/local/apache2/bin/apachectl graceful:重新加載配置
·/usr/local/apache2/htcocs         主頁存放目錄

·/usr/local/apache2/bin/apachectl  啓動文件目錄

·/usr/local/apache2/conf           配置文件路徑               
1.域名跳轉 

·網站可以設置域名多個域名別名,設置訪問別名是跳轉到主域名
·主域名爲www.1.com別名爲www.a.com,www.b.com。訪問別名時跳轉到www.1.com
·301是永久跳轉,302是暫時跳轉,有多個域名要跳轉與要加【OR】
在虛擬主機配置文件中加入:  

vim  /usr/local/apache/conf/extra/httpd-vhost.conf        

    <IfModule mod_rewrite.c> 

        RewriteEngine on                                       重寫引擎 [開啓]

        RewriteCond  %{HTTP_HOST}  ^www.a.com$                 重寫條件:是www.a.com時

        RewriteRule   ^/(.*)$  www.1.com /$1  [R=301,L]        重寫規則:跳轉到www.1.com

    </IfModule>


2.日誌輪詢(切割)
(1)Apache主配置文件中定義的日誌格式,第一種是複雜格式,第二種是普通格式(工作中用複雜格式)

     LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""   combined 

     LogFormat "%h %l %u %t \"%r\" %>s %b"  common   
(2)訪問日誌格式解釋:
         %h:客戶機的IP地址
         %l:客戶機登陸名稱
         %u:認證用戶
         %t:訪問的日期、時間
         %r:客戶訪問的方式,訪問的什麼資源,什麼協議
         %>s 請求對應的狀態碼 (2開頭正常,3開頭被重定向,4開頭客戶端存在錯誤,5開頭服務器端遇到錯誤)   
         %b:傳送的字節數
         % {Referer}:從哪個頁面來的(比如從百度搜索到的QQ空間,那Referer就是百度
         %{User-Agent}:客戶用的什麼瀏覽器

(3)配置日誌切割:避免產生大文件, 可以每天生成一個
·在httpd.conf裏定義日誌格式,虛擬主機裏只是調用日誌格式
·/usr/local/apache2/conf/httpd.conf中定義日誌格式
  LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""   combined 
·/usr/local/apache2/conf/extra/httpd-vhost.conf中,用rotatelog工具做日誌切割時調用

·在虛擬主機配置文件中加入 

 CustomLog "|/usr/local/apache2/bin/rotatelogs -l/usr/local/apache2/logs/access_%Y%m%d.log 86400 " combined

·第一段:rotatelog工具路徑  第二段:日誌存放路徑和命名(按年月日命名)第三段:調用httpd.conf中的日誌格式爲combined格式

完整配置:

ErrorLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.com-error_%Y%m%d.log 86400"
    SetEnvIf Request_URI  ".*\.gif$ "    image-request     #定義需要過濾的內容
    SetEnvIf Request_URI  ".*\.jpg$"   image-request
    SetEnvIf Request_URI  ".*\.png$"  image-request
    SetEnvIf Request_URI  ".*\.bmp$" image-request
    SetEnvIf Request_URI  ".*\.swf$"   image-request
    SetEnvIf Request_URI  ".*\.js$"     image-request
    SetEnvIf Request_URI  ".*\.css$"   image-request
    CustomLog "|/usr/local/apache/bin/rotatelogs -l /usr/local/apache/logs/oem.discuz.qq.com-access_%Y%m%d.log 86400" combined env=!image-request    #過濾出image-request  #取反,日誌中不去記錄定義的這些

3.靜態緩存

·好處:用戶第一次訪問時,把定義的緩存在瀏覽器中,第二次訪問就不需要再次請求,加快訪問速度

·定義圖片、css、js、swf過期時間   
·使用的模塊:mod_expires.c 
·在虛擬主機配置文件中加入:

  <IfModule mod_expires.c>

     ExpiresActive on     #有效期[打開]

     ExpiresByType image/gif  "access plus 1 day"   #過期的類型 ,訪問超過一天

     ExpiresByType image/jpeg "access plus 24 hours"

     ExpiresByType image/png  "access plus 24 hours"

     ExpiresByType image/css  "now  plus 2 day"

     ExpiresByType application/javascript       "now plus 2 hours"

     ExpiresByType application/shockwave-flash  "now plus 2 hours"

     ExpiresDefault "now plus 0 min"

   </IfModule>

</VirtualHost> 


·緩存時間測試:curl -x127.0.0.1:80 www.a.com/1.gif

4.防 盜鏈      
·防止網站的圖片、文檔、音樂等格式他人盜用鏈接,只允許指定的域名可以鏈接
·盜鏈:把別人網站上的一張圖片,複製鏈接,然後發在自己的網站上,用戶來訪問自己網站,承受負擔和流量的是別人的服務器。 
      模板如下,定義的文件格式可自行添加:

 <Directory  /data/www>  

       SetEnvIfNoCase Referer  "www.1.com"   local_ref       #定義訪問的域名

       SetEnvIfNoCase Referer  "www.a.com"   local_ref       #定義訪問的域名

       SetEnvIfNoCase Referer  "www.b.com"   local_ref       #定義訪問的域名

       SetEnvIfNoCase Referer  "^$"          local_ref    

          <filesmatch "txt|doc|mps|rar|zip|jpeg|png|jpg|gif">   #定義禁止盜鏈的格式

             Order Allow,Deny

             Allow from env=local_ref  #這裏設置規則,允許還是不允許

           </filesmatch>

    </Directory>


·使用curl -e  檢測防盜鏈 
·解釋:域名是SetEnvIfNoCase 中定義的纔可以訪問filesmatch中定義的禁止盜鏈的內容 
·注意:如果是上邊定義的域名以外的域名會顯示403錯誤
·其他網站使用盜鏈地址出現403錯誤,401錯誤是有用戶認證 需要加 -u參數 


5.某個目錄下禁止解析php(防止看到源代碼) 

 <Directory /data/www/uc_server>

      php_admin_flag_engine off       關閉解析

        <filesmatch "(.*)php">        文件匹配是php結尾的

           Order Deny,Allow           先拒絕後允許

           Deny from all              拒絕所有

         </filesmatch>

  </Directory>

6.訪問控制

·禁止用IP訪問網站

 <Directory /data/www>

   Order allow,deny

   Deny from all

 </Directory>

·對wordpress後臺主頁做訪問控制

 <Directory /data/www/wp-admin>

  <filesmatch "index.php">

   Order deny,allow

   Deny from all

   Allow from 127.0.0.1

  </filesmatch>

 </Directory>

測試:網頁進入後臺,後出現403 forbidden。

7.禁止解析php

 ·禁止解析不是禁止訪問,是禁止解析出php源代碼

<Directory /data/www/wp-admin>

php_admin_flag engine off    #關閉解析

 <filesmatch "(.*)php">     #/data/www/wp-admin目錄下任何php的文件,都禁止解析

   Order deny,allwo

   Deny from all        

 </filesmatch>

</Directory>



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章