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

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

·/usr/local/apache/bin/apachectl   -V:查看使用的模式php

·/usr/local/apache2/bin/apachectl  -t:檢查語法錯誤css

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

·/usr/local/apache2/bin/apachectl graceful:從新加載配置java

·/usr/local/apache2/htcocs         主頁存放目錄apache

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

·/usr/local/apache2/conf           配置文件路徑緩存

Apache的兩種模式:服務器

worker模式:使用多個子進程,每一個子進程又有多個線程,每一個線程處理一個請求(適用於高併發場景,消耗內存小)併發

perfork模式:使用多個子進程,每一個子進程不包括線程,每一個進程處理一個請求(比較穩定)

1.域名跳轉

·網站能夠設置域名多個域名別名,設置訪問別名是跳轉到主域名
·主域名爲www.1.com別名爲www.a.com,www.b.com。訪問別名時跳轉到www.1.com
·301是永久跳轉,302是暫時跳轉,有多個域名要跳轉與要加【OR】
·模塊:rewrite
配置:    
<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\" %&gt;s %b \"%{Referer}i\" \"%{User-Agent}i\""   combined
LogFormat "%h %l %u %t \"%r\" %&gt;s %b"   common
(2)訪問日誌格式解釋:
%h:客戶機的IP地址
%l:客戶機登錄名稱
%u:認證用戶
%t:訪問的日期、時間
%r:客戶訪問的方式,訪問的什麼資源,什麼協議
%>s 請求對應的狀態碼  #2開頭正常,3開頭被重定向,4開頭客戶端存在錯誤,5開頭服務器端遇到錯誤
%b:傳送的字節數
%{Referer}:   從哪一個頁面來的(好比從百度搜索到的QQ空間,那Referer就是百度
%{User-Agent}:客戶用的什麼瀏覽器
(3)配置日誌切割:避免產生大文件, 能夠天天生成一個
·在httpd.conf裏定義日誌格式,虛擬主機裏只是調用日誌格式
配置:
SetEnvIf Request_URI  ".*\.gif$ "    p_w_picpath-request     #定義不記錄進日誌的內容,p_w_picpath-request是調用名稱
SetEnvIf Request_URI  ".*\.jpg$"     p_w_picpath-request
SetEnvIf Request_URI  ".*\.png$"     p_w_picpath-request
SetEnvIf Request_URI  ".*\.bmp$"     p_w_picpath-request
SetEnvIf Request_URI  ".*\.swf$"     p_w_picpath-request
SetEnvIf Request_URI  ".*\.js$"      p_w_picpath-request
SetEnvIf Request_URI  ".*\.css$"     p_w_picpath-request
CustomLog "|/usr/local/apache/bin/rotatelogs -l /var/log/access_%Y%m%d.log 86400" combined env=!p_w_picpath-request  
#env=!p_w_picpath-request 只記錄沒被p_w_picpath-requset的內容。

3.靜態緩存

·好處:用戶第一次訪問時,把定義的緩存在瀏覽器中,第二次訪問就不須要再次請求,加快訪問速度
·定義圖片、css、js、swf過時時間
·模塊:mod_expires.c
配置
<IfModule mod_expires.c>
ExpiresActive on                                #有效期[打開]
ExpiresByType p_w_picpath/gif  "access plus 1 day"    #過時的類型 ,訪問超過一天
ExpiresByType p_w_picpath/jpeg "access plus 24 hours"
ExpiresByType p_w_picpath/png  "access plus 24 hours"
ExpiresByType p_w_picpath/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>
·緩存時間測試: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錯誤

5.訪問控制

·禁止用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。

6.禁止解析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>

7.僞靜態

加入到rewrite模塊中

RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/topic-(.+)\.html$ /portal.php?mod=topic&topic=$1&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/article-([0-9]+)-([0-9]+)\.html$ /portal.php?mod=view&aid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/forum-(\w+)-([0-9]+)\.html$ /forum.php?mod=forumdisplay&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=viewthread&tid=$1&extra=page\%3D$3&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/group-([0-9]+)-([0-9]+)\.html$ /forum.php?mod=group&fid=$1&page=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/space-(username|uid)-(.+)\.html$ /home.php?mod=space&$1=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/blog-([0-9]+)-([0-9]+)\.html$ /home.php?mod=space&uid=$1&do=blog&id=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/archiver/(fid|tid)-([0-9]+)\.html$ /archiver/index.php?action=$1&value=$2&%1
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteRule ^/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ /plugin.php?id=$1:$2&%1
相關文章
相關標籤/搜索