httpd.conf詳解

### 此份配置同時適用於Windows(開發環境)和Linux(產品環境),依靠MPM的不同進行區分
##########################################################################################
####   第一部分  全局配置 [這些指令的作用域含有"server config"但不含"virtual host"]  #####
##########################################################################################
#####################################################################
##### MPM 指令(所有MPM指令都僅能用於全局配置) #####
##### prefork 與 mpm_winnt 的公共指令
  #內核轉儲目錄(Linux上Apache以root身份啓動並切換至其他用戶,再忽略該指令可以禁止內核轉儲)
  #CoreDumpDirectory /share/empty
  #在所有IP上監聽80端口的HTTP協議
   Listen 80 http
  #半鏈接隊列的最大長度,不能設的太大,而應當通過啓用SYN-Cookie抵禦SYN洪水。
   ListenBacklog 255
  #主內存分配程序在未調用free()的情況下允許持有的最大自由內存數量(默認"0"表示無限制)
   MaxMemFree 0
  #將每個子進程在其生存期內允許伺服的最大請求數量設爲有限值,可以防止(偶然的)內存泄漏無限進行,有助於當服務器負載減輕的時候減少活動進程的數量
   MaxRequestsPerChild 10000
  #記錄父進程(監控進程)PID的文件
<IfModule mpm_winnt_module>
   PidFile log/httpd.pid
</IfModule>
<IfModule mpm_prefork_module>
   PidFile /var/run/httpd.pid
</IfModule>
  #TCP接收緩衝區大小(相當於8幀,如果不用http上傳可減小到4幀)
   ReceiveBufferSize 11840
  #TCP發送緩衝區大小(相當於8幀,一般比最常用頁面壓縮後的平均尺寸稍大)
   SendBufferSize 11840
  #父進程和子進程之間通信使用的計分板,建議不要設置以首選在匿名共享內存中建立
  #ScoreBoardFile /tmp/httpd_status
##### mpm_winnt 特有指令
<IfModule mpm_winnt_module>
  #每個子進程可配置的線程數上限,應當和ThreadsPerChild可能達到的最大值保持一致
   ThreadLimit 5
  #每個子進程建立的線程數(必須小於等於ThreadLimit)
   ThreadsPerChild 5
  #處理客戶端連接的線程使用的棧尺寸(65536字節),註釋掉以後將使用操作系統默認值
  #ThreadStackSize 65536
  #僅在其他軟件干擾AcceptEx()操作時才使用這個
  #Win32DisableAcceptEx
</IfModule>
##### prefork 特有指令
<IfModule mpm_prefork_module>
  #串行化多個子進程在多個socket上accept()請求的方法(僅在使用了多個Listen指令時候纔有意義)
  #建議在 Linux 2.6 內核並且 Glibc 中包含NPTL時使用posixsem選項
  #當然,爲了得到最佳性能,最好就根本不使用多個Listen語句。
   AcceptMutex posixsem
  #當AcceptMutex指令的值是fcntl或flock的時候,Apache使用的鎖文件的位置(最好放在TMPFS中)
  #其他用戶可以通過建立一個同名文件來阻止服務器啓動,以造成拒絕服務***
   LockFile /tmp/httpd_accept.lock
  #子進程崩潰以後進行異常處理的鉤子程序
   EnableExceptionHook Off
  #優雅停止服務器的超時秒數(5分鐘)
   GracefulShutDownTimeout 300
  #子進程運行時的組
   Group www
  #子進程運行時的用戶
   User httpd
  #允許同時伺服的最大接入請求數量(用於應對潛在的請求高峯)
  #建議設爲與postgresql的max_connections值相等(假定每個接入請求平均使用一個數據庫鏈接)
   MaxClients 1000
  #服務器允許配置的進程數上限(保持和MaxClient相等)
   ServerLimit 1000
  #服務器啓動時建立的子進程數
   StartServers 30
  #空閒子進程的最大數量(用於應對潛在的請求高峯)
   MaxSpareServers 30
  #空閒子進程的最小數量
   MinSpareServers 15
</IfModule>
#####################################################################
##### mod_so指令(一共只有兩條Load..指令,且僅能用於全局配置) #####
<IfModule mpm_winnt_module>
#由於Linux已將下列模塊靜態編譯進了httpd,因此不需要動態加載(PHP除外)
#特別提醒:Windows加載了mod_info/mod_status/mod_bw而Linux沒有加載。
  #基於文件的摘要認證和基於用戶的授權以及訪問控制
   LoadModule auth_digest_module bin/mod_auth_digest.so
   LoadModule authn_default_module bin/mod_authn_default.so
   LoadModule authn_file_module bin/mod_authn_file.so
   LoadModule authz_default_module bin/mod_authz_default.so
   LoadModule authz_user_module bin/mod_authz_user.so
   LoadModule authz_host_module bin/mod_authz_host.so
  #對輸出內容(一般是文本)進行壓縮
   LoadFile   bin/zlib1.dll
   LoadModule deflate_module bin/mod_deflate.so
  #指定目錄索引文件以及爲目錄提供"尾斜槓"重定向(僅供phppgadmin使用)
   LoadModule dir_module bin/mod_dir.so
  #環境變量控制
   LoadModule env_module bin/mod_env.so
   LoadModule setenvif_module bin/mod_setenvif.so
  #通過配置文件控制"Expires:"和"Cache-Control:"頭內容
   LoadModule expires_module bin/mod_expires.so
  #記錄日誌和定製日誌格式
   LoadModule log_config_module bin/mod_log_config.so
  # MIME模塊(PHP依賴於此模塊)
   LoadModule mime_module       bin/mod_mime.so
  #實時重寫URL請求
   LoadModule rewrite_module bin/mod_rewrite.so
  #生成Apache配置情況的Web頁面
   LoadModule info_module bin/mod_info.so
  #生成描述服務器狀態的Web頁面
   LoadModule status_module bin/mod_status.so
  #限制客戶端帶寬(用於模擬低速internet環境)[Http://apache.ivn.cl]
   #LoadModule bw_module bin/mod_bw.so
</IfModule>
##### 添加PHP5支持
<IfModule mpm_winnt_module>
   LoadFile   php/php5ts.dll
   LoadModule php5_module  php/php5apache2_2.dll
   PHPINIDir  php
</IfModule>
<IfModule mpm_prefork_module>
   LoadModule php5_module  /lib/httpd/libphp5.so
   PHPINIDir  /etc/httpd
</IfModule>
   AddType  application/x-httpd-php  .php .htm
#####################################################################
##### 僅能夠用於全局配置的核心(Core)指令 #####
#根據協議類型對監聽Socket進行優化
#AcceptFilter http data
#AcceptFilter https data
#限制客戶端HTTP請求頭域的數量
 LimitRequestFields 20
#限制客戶端HTTP請求頭的字節數
 LimitRequestFieldSize 3000
#限制客戶端HTTP請求行的字節數
 LimitRequestLine 1020
#爲虛擬主機在所有IP地址上監聽80
 NameVirtualHost *:80
#服務器根目錄(必須是絕對路徑),配置文件中的其它相對路徑都將基於此目錄
<IfModule mpm_winnt_module>
 ServerRoot /GreenAPP/Apache
</IfModule>
<IfModule mpm_prefork_module>
 ServerRoot /share/empty
</IfModule>
#"Server:"應答頭(Prod最少,Full最多)
 ServerTokens Prod
#服務器超時
 TimeOut 15
#禁止處理TRACE請求
 TraceEnable off
#####################################################################
##### 僅能夠用於全局配置的動態加載模塊指令 #####
# mime.types文件的位置(mod_mime)
<IfModule mpm_winnt_module>
 TypesConfig conf/mime.types
</IfModule>
<IfModule mpm_prefork_module>
 TypesConfig /etc/httpd/mime.types
</IfModule>
#檢查服務器發送的 nonce 計數(尚未實現)(mod_auth_digest)
#AuthDigestNcCheck On
#爲了跟蹤客戶端而分配的共享內存字節數(mod_auth_digest),每鏈接需要128字節。
 AuthDigestShmemSize 25600
#禁止在內存中緩衝日誌(mod_log_config)
 BufferedLogs Off
#爲了和RewriteMap*程序*通訊而使用的同步鎖文件的名稱(mod_rewrite)
#RewriteLock file-path
<IfModule status_module>
  #爲每個請求記錄擴展的狀態信息
   ExtendedStatus On
</IfModule>
################################################################################################
####   第二部分  主服務器配置[這些指令的作用域含同時含有"server config"和"virtual host"]   #####
################################################################################################
## 本配置文件將所有主機都當作虛擬主機,並不存在真正的"主服務器",因此這部分配置只是所有虛擬主機的默認設置而已 ##
#####################################################################
##### 適用於主服務器配置的核心(Core)指令 #####
#### 虛擬主機必須重新設定的指令
  #文檔樹的根目錄(沒有真正的主服務器,因此不設置此值)(不能包含結尾斜槓)
  #DocumentRoot directory-path
  #當沒有指定ServerName時,服務器會嘗試對IP地址進行反向查詢來推斷主機名。
  #所以,必須胡亂設置一個默認的主服務器主機名
   ServerName xx.xx.xx.xx
#### 目錄相關
  #分佈式配置文件的名字
   AccessFileName .htaccess
  #目錄僅可以使用符號鏈接的特性
   Options FollowSymLinks
#### 應答頭相關
  #當應答內容是text/plain或text/html時在HTTP應答頭中加入的默認字符集
   AddDefaultCharset utf-8
  #無法由其他方法確定內容類型時,發送的默認MIME內容類型
   DefaultType application/octet-stream
  #禁止生成Content-MD5應答頭
   ContentDigest Off
  #用以創建ETag應答頭的文件的屬性
   FileETag All
#### 貌似安全相關
  #僅當一個請求映射到一個真實存在的路徑時纔會被接受
   AcceptPathInfo Off
  #禁止URL中使用經過編碼的路徑分割符
   AllowEncodedSlashes Off
  #指定內部重定向和嵌套子請求的最大數量(至少是5)
   LimitInternalRecursion 10
  #限制客戶端發送的HTTP請求體的最大字節長度(1.2M)
   LimitRequestBody 1300000
  #限制基於XML的請求體的最大字節長度(1.2M)
   LimitXMLRequestBody 1300000
<IfModule mpm_prefork_module>
  #限制Apache子進程派生的進程佔用CPU的最大秒數
   RLimitCPU 1 1
  #限制由Apache子進程派生的進程佔用的最大內存字節數
   RLimitMEM 1 1
  #限制由Apache子進程派生的進程所派生的進程數目
   RLimitNPROC 0 1
</IfModule>
  #禁止生成服務器端生成文檔的頁腳
   ServerSignature Off
#### 性能相關
  #在遞送中使用內存映射來讀取文件(某些情況下需要禁用)
   EnableMMAP On
  #使用操作系統內核的sendfile支持來將文件發送到客戶端
   EnableSendfile On
  #禁用對客戶端IP的DNS查找
   HostnameLookups Off
  #持久鏈接(禁用)
   KeepAlive Off
   KeepAliveTimeout 1
   MaxKeepAliveRequests 1
#### 錯誤應答與錯誤日誌
  #自定義錯誤響應
  #400 錯誤的請求
   ErrorDocument 400 /error/http|ErrCode=400.htm
  #403 禁止訪問
   ErrorDocument 403 /error/http|ErrCode=403.htm
  #404 未找到
   ErrorDocument 404 /error/http|ErrCode=404.htm
  #405 方法不被允許
   ErrorDocument 405 /error/http|ErrCode=405.htm
  #406 資源已經找到但MIME類型與Accpet頭中所指不兼容
   ErrorDocument 406 /error/http|ErrCode=406.htm
  #408 在服務器許可的等待時間內客戶一直沒有發出任何請求
   ErrorDocument 408 /error/http|ErrCode=408.htm
  #409 由於請求和資源的當前狀態相沖突因此不能成功(通常和PUT有關)
   ErrorDocument 409 /error/http|ErrCode=409.htm
  #410 所請求的文檔已經不再可用而且服務器不知道應該重定向到哪一個地址
   ErrorDocument 410 /error/http|ErrCode=410.htm
  #411 必須發送Content-Length頭否則無法處理
   ErrorDocument 411 /error/http|ErrCode=411.htm
  #412 指定的一些前提條件失敗
   ErrorDocument 411 /error/http|ErrCode=412.htm
  #413 請求實體太大
   ErrorDocument 413 /error/http|ErrCode=413.htm
  #414 請求URI太長
   ErrorDocument 414 /error/http|ErrCode=414.htm
  #415 不支持的MIME類型
   ErrorDocument 415 /error/http|ErrCode=415.htm
  #416 Range頭所請求的範圍無法滿足
   ErrorDocument 416 /error/http|ErrCode=416.htm
  #417 執行失敗
   ErrorDocument 417 /error/http|ErrCode=417.htm
  #423 鎖定的錯誤
   ErrorDocument 423 /error/http|ErrCode=423.htm
  #500 內部服務器錯誤
   ErrorDocument 500 /error/http|ErrCode=500.htm
  #501 服務器不支持實現請求所需要的功能
   ErrorDocument 501 /error/http|ErrCode=501.htm
  #502 服務器用作網關或代理服務器時收到了無效響應
   ErrorDocument 502 /error/http|ErrCode=502.htm
  #503 服務器由於維護或者負載過重暫時不能提供服務
   ErrorDocument 503 /error/http|ErrCode=503.htm
  #504 不能及時地從遠程服務器獲得應答(作爲代理或網關的服務器)
   ErrorDocument 504 /error/http|ErrCode=504.htm
  #505 服務器不支持請求中所指明的HTTP版本
  #ErrorDocument 505 /error/http|ErrCode=505.htm
  #返回給客戶端的錯誤信息中包含的管理員郵件地址
   ServerAdmin [email protected]
  #錯誤日誌(未使用滾動)
<IfModule mpm_winnt_module>
   ErrorLog log/error.log
   LogLevel info
</IfModule>
<IfModule mpm_prefork_module>
   ErrorLog /var/log/httpd/error.log
   LogLevel warn
</IfModule>
#### 處理器
<IfModule mpm_winnt_module>
  #定位CGI腳本解釋器(僅用於Win32)
   ScriptInterpreterSource Script
</IfModule>
  #強制所有匹配的文件被一個指定的處理器處理
  #SetHandler handler-name|None
#### 輸入輸出過濾器
  #壓縮輸出所有文本內容(目前反對使用該指令,但因其簡單故而使用)
   AddOutputFilterByType  DEFLATE  application/x-javascript application/xhtml+xml application/xslt+xml application/xml application/xml-dtd text/css text/html text/plain text/richtext text/rtf text/xml
  #設置處理客戶端請求和POST輸入時使用的過濾器
  #SetInputFilter filter[;filter...]
  #設置用於處理服務器輸出應答的過濾器
  #SetOutputFilter filter[;filter...]
#### 規範化
  #使用客戶端提供的主機名和端口構建自引用URL
  #可以巧妙解決雙線機房以及同目錄多站點的問題 #還可以巧妙解決同時運行產品環境和開發環境的問題(本配置未使用該技巧)
   UseCanonicalName Off
   UseCanonicalPhysicalPort Off
#####################################################################
##### 適用於主服務器配置的動態加載模(DSO)塊指令 #####
#### mod_deflate ####
  #用於zlib一次壓縮的片斷大小(字節)(20K),一般等於較大頁面的大小
   DeflateBufferSize 20240
  #壓縮程度,取值範圍在 1(最低壓縮率) 到 9(最高壓縮率)之間
   DeflateCompressionLevel 3
  #在日誌中將一個指示壓縮率標記附加在請求之後(關閉)
  #DeflateFilterNote Input instream
  #DeflateFilterNote Output outstream
  #DeflateFilterNote Ratio ratio
  #壓縮時最多可以使用多少內存(取值範圍在1到9之間)
   DeflateMemLevel 9
  #壓縮窗口的大小(取值範圍在1到15之間,越大壓縮效果越好)
   DeflateWindowSize 15
  #目錄結尾斜線(/)自動補全功能(通過重定向,強烈建議打開)
  #默認的目錄索引文件(強烈建議按此順序設置)
<IfModule mpm_prefork_module>
   DirectorySlash On
   DirectoryIndex index.html index.htm index.php
</IfModule>
<IfModule mpm_winnt_module>
   DirectorySlash Off
   DirectoryIndex none
</IfModule>
#### mod_env #####
#### mod_setenvif #####
  #傳送shell中的環境變量
  #PassEnv env-variable [env-variable] ...
  #強制gzip輸出[建議不要這樣,會讓機器人頭暈]
  #SetEnv   force-gzip 1
  #刪除環境變量(默認不記錄任何訪問日誌)
   UnsetEnv AccessLog
  #根據客戶端請求屬性設置環境變量(僅記錄對txt/php/html的訪問)
   SetEnvIf Request_URI  "\.(txt|php|html?)$"  AccessLog=1
##### mod_expires #####
  #啓用"Expires:"和"Cache-Control:"頭
   ExpiresActive On
  #由MIME類型配置的Expires頭的值
  #ExpiresByType MIME-type <code>seconds
  #默認所有文檔的有效期爲30天
    ExpiresDefault "access plus 30 days"
  #但是php文檔默認不存在有效期(隨後應當根據實際情況詳細設置)
  <Files *.php>
    ExpiresActive Off
  </Files>
##### mod_log_config #####
  #訪問日誌(虛擬主機+組合日誌格式)(有條件的記錄)
<IfModule mpm_winnt_module>
   CustomLog log/access.log "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=AccessLog
</IfModule>
<IfModule mpm_prefork_module>
   CustomLog /var/log/httpd/access.log "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" env=AccessLog
</IfModule>
##### mod_mime #####
  #在文件擴展名與特定的編碼方式之間建立映射關係
  #AddEncoding MIME-enc extension [extension] ...
  #將所有 .html.gz .css.gz 之類經過壓縮的靜態內容使用"Content-Encoding: gzip"頭髮送,
  #這樣既節約帶寬又比使用mod_deflate的實時壓縮節約CPU
  #但只適用於靜態內容並且要結合內容協商模塊的類型表功能才能實現,而且不利於搜索引擎機器人收錄,
  #考慮到mod_expires的作用,這份配置放棄這種方法
  #不過這樣也可能和 AddOutputFilterByType  DEFLATE .... 指令衝突,需要進一步實驗或尋找其他有效方法
  #AddEncoding gzip .gz
  #爲所有文件設定特定的默認語言(簡體中文)
   DefaultLanguage zh-CN
  #在使用MultiViews查詢所匹配的文件時要包含的文件類型
  #NegotiatedOnly選項規定每個跟在基礎名字後面的擴展名必須關聯到一個在內容協商時已知的mod_mime擴展名,
  #例如:字符集、內容類型、語言、編碼方式。這是一種最嚴格也是副作用最少的實現方法,它是默認的處理方式。
   MultiviewsMatch NegotiatedOnly
  #在給定的文件擴展名與特定的字符集之間建立映射
  #AddCharset charset extension [extension] ...
  #在文件擴展名與特定的語言之間建立映射
  #AddLanguage MIME-lang extension [extension] ...
  #在文件擴展名與特定的處理器之間建立映射
  #AddHandler handler-name extension [extension] ...
  #在文件擴展名與特定的輸入過濾器之間建立映射
  #AddInputFilter filter[;filter...] extension [extension] ...
  #在文件擴展名與特定的輸出過濾器之間建立映射關係
  #AddOutputFilter filter[;filter...] extension [extension] ...
  #在給定的文件擴展名與特定的內容類型之間建立映射
  #AddType MIME-type extension [extension] ...
##### mod_rewrite #####
  #關閉重寫引擎(不可繼承,必須在每個需要的虛擬主機中單獨開啓)
   RewriteEngine Off
  #重寫引擎日誌的詳細程度(9-最詳細,0-關閉)
   RewriteLogLevel 0
  #強制當前配置繼承其父配置(映射表、條件、規則)
  #RewriteOptions inherit
  #定義重寫發生的條件(爲了提高匹配效率)和規則(不需要考慮#..內容,因爲瀏覽器並不發送)
   RewriteCond  %{REQUEST_URI}  \.htm$
   RewriteRule  ^(.+)\.htm$             $1.php       [NE,C]
   RewriteRule  ^([^|]+)\|(.+)\.php$    $1.php?$2    [NE,L]
<IfModule info_module>
  #爲server-info處理器顯示的模塊增加額外信息
  #AddModuleInfo module-name string
</IfModule>
<IfModule bw_module>
  #開啓帶寬限制(默認是關閉的,也就是不做任何限制)
   BandWidthModule On
  #強制對所有請求進行限制
   ForceBandWidthModule On
  #連接數上限。必須與BandWidth的子網範圍對應,當然也可以不使用該指令。
   MaxConnection 127.0.0.0/8     2
  #帶寬上限(B/s)。這裏限制爲16Kbps
   BandWidth 127.0.0.0/8     2048
  #帶寬下限(B/s),設爲"-1"表示僅使用上限。
   MinBandWidth all -1
  #將數據包分割成每小塊1024字節進行延遲發送,可用值爲1024-131072,默認爲8192。
   BandWidthPacket 1024
  #將所有大於50kB的文件下載速度限制壓低到8Kbps
  #LargeFileLimit * 50 1024
  #默認到達MaxConnection限制後將發送"503"錯誤代碼(HTTP_SERVICE_UNAVAILABLE),
  #該指令允許你自定義一個未使用的錯誤代碼(300~599)並結合ErrorDocument指令實現自定義的錯誤代碼說明。
  #BandWidthError 510
</IfModule>
################################################################################################
####   第三部分  默認目錄特性/認證/授權/訪問控制[這些指令的作用域含有"directory"]   #####
################################################################################################
## 默認特性窮盡限制與封閉之能事,因此必須在隨後的配置中按需"放水" ##
## 此部分並不包含所有作用域含有"directory"的指令 ##
<Directory />
  #禁用.htaccess文件(僅可用於目錄)
   AllowOverride None
  #目錄僅可以使用符號鏈接的特性(僅可用於目錄)
   Options FollowSymLinks
  #必須同時通過認證並且滿足訪問控制條件
   Satisfy all
  #使用摘要認證
   AuthType Digest
   AuthDigestAlgorithm MD5
   AuthDigestNonceLifetime 1200
   AuthDigestQop auth
   AuthDigestProvider file
   AuthDefaultAuthoritative On
  #所有認證共用一個用戶名/密碼文件
<IfModule mpm_winnt_module>
   AuthUserFile conf/authn.md5
</IfModule>
<IfModule mpm_prefork_module>
   AuthUserFile /etc/httpd/authn.md5
</IfModule>
   AuthzUserAuthoritative On
   AuthzDefaultAuthoritative On
  #拒絕所有訪問(mod_authz_host)
  #Allow from 127.0.0.1
   Deny from all
   Order Allow,Deny
</Directory>
#因爲<DirectoryMatch>在所有<Directory>之後合併,所以下面可以確保拒絕訪問任何"secret"目錄
<DirectoryMatch /secret/>
   AllowOverride None
   Options FollowSymLinks
   Satisfy all
   Deny from all
   Order Allow,Deny
</DirectoryMatch>
##下面是一段非常愚蠢的做法,完全推翻了上述默認的訪問控制,因爲<Location>在最後合併
##實際效果變成允許GET和POST訪問一切目錄和文件!!!
#<Location />
#企圖僅僅允許GET和POST方法(實際上行不通)
#<LimitExcept GET POST>
#  Order Allow,Deny
#  Deny from all
#</LimitExcept>
#</Location>
############################################################################
####   第四部分  默認虛擬主機[這些指令的作用域都含有"virtual host"]   #####
############################################################################
<VirtualHost *:80>
#(共享服務器,存放與特定子站無關或無法在子站內部統一的內容)
  #文檔樹根目錄、主機名和別名
   DocumentRoot /www/oklaoshi/www
    ServerName   oklaoshi.org
    ServerAlias  oklaoshi.net oklaoshi.com oklaoshi.cn
    ServerAlias  www.oklaoshi.org www.oklaoshi.net   www.oklaoshi.com www.oklaoshi.cn
    #開啓重寫引擎並繼承主服務器配置(映射表、條件、規則)
     RewriteEngine On
     RewriteOptions inherit
    #傳送shell中指定的加密密鑰(最好只傳遞到特定目錄下的特定文件)
    #PassEnv ENCRYPT_KEY
    #重新設置PHP針對每個站點的不同特性
     php_admin_value open_basedir  "/www/oklaoshi/"
     php_admin_flag  file_uploads Off
     php_admin_value include_path  "/www/oklaoshi/secret"
     php_admin_value session.name  "OKLAOSHISESSIONID"
     php_admin_value session.referer_check  "oklaoshi."
    #默認爲非本地引用
     UnsetEnv  Local_Referer
    #判斷是否爲本地引用
     SetEnvIf Referer "oklaoshi\.(org|net|com|cn)" Local_Referer
  <Directory   "/www/oklaoshi/www">
      Order Allow,Deny
      Allow from all
    #防止盜鏈(必須放在<Directory>內部)
    <FilesMatch "\.(js|css|gif|jpe?g|png|swf)$">
      Order Allow,Deny
      Allow from env=Local_Referer
    </FilesMatch>
  </Directory>
#### 下面的指令只能在虛擬主機中設置
  #刪除任何給定的擴展名與內容字符集之間的關聯
  #RemoveCharset extension [extension] ...
  #刪除任何給定的擴展名與內容編碼方式之間的關聯
  #RemoveEncoding extension [extension] ...
  #刪除任何指定擴展名與處理器之間的關聯
  #RemoveHandler extension [extension] ...
  #刪除指定擴展名與輸入過濾器之間的關聯
  #RemoveInputFilter extension [extension] ...
  #刪除指定的擴展名與內容語言之間的關聯
  #RemoveLanguage extension [extension] ...
  #刪除指定擴展名與輸出過濾器之間的關聯
  #RemoveOutputFilter extension [extension] ...
  #刪除指定擴展名與內容類型之間的關聯
  #RemoveType extension [extension] ...
## 服務器配置報告
  <IfModule info_module>
  <Location /server-info>
    SetHandler server-info
    AuthName Apache_Admin
    Require user Apache_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
  </Location>
  </IfModule>
## 服務器狀態報告
  <IfModule status_module>
  <Location /server-status>
    SetHandler server-status
    AuthName Apache_Admin
    Require user Apache_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
  </Location>
  </IfModule>
</VirtualHost>
############################################################################
####   第四部分  其它虛擬主機   #####
############################################################################
<VirtualHost *:80>
  #文檔樹根目錄、主機名和別名(與"主服務器"設爲相同即可取消"主服務器")(.org/.net電信 .com/.cn網通)(其他是各地分站)
   DocumentRoot /www/oklaoshi/htdocs
    ServerName   bj.oklaoshi.org
    ServerAlias                   bj.oklaoshi.net    bj.oklaoshi.com  bj.oklaoshi.cn
    ServerAlias  tj.oklaoshi.org  tj.oklaoshi.net    tj.oklaoshi.com  tj.oklaoshi.cn
    ServerAlias  sh.oklaoshi.org  sh.oklaoshi.net    sh.oklaoshi.com  sh.oklaoshi.cn
    ServerAlias  nj.oklaoshi.org  nj.oklaoshi.net    nj.oklaoshi.com  nj.oklaoshi.cn
    ServerAlias  gz.oklaoshi.org  gz.oklaoshi.net    gz.oklaoshi.com  gz.oklaoshi.cn
    #開啓重寫引擎並繼承主服務器配置(映射表、條件、規則)
     RewriteEngine On
     RewriteOptions inherit
    #傳送shell中指定的加密密鑰(最好只傳遞到特定目錄下的特定文件)
     PassEnv ENCRYPT_KEY
    #重新設置PHP針對每個站點的不同特性
     php_admin_value open_basedir  "/www/oklaoshi/"
     php_admin_flag  file_uploads Off
     php_admin_value include_path  "/www/oklaoshi/secret"
     php_admin_value session.name  "OKLAOSHISESSIONID"
     php_admin_value session.referer_check  "oklaoshi."
    #默認爲非本地引用
     UnsetEnv  Local_Referer
    #判斷是否爲本地引用
     SetEnvIf Referer "oklaoshi\.(org|net|com|cn)" Local_Referer
  <Directory   "/www/oklaoshi/htdocs">
      Order Allow,Deny
      Allow from all
    #防止盜鏈(必須放在<Directory>內部)
    <FilesMatch "\.(js|css|gif|jpe?g|png|swf)$">
      Order Allow,Deny
      Allow from env=Local_Referer
    </FilesMatch>
  </Directory>
  #網站根用戶後臺管理目錄(需要認證)
  <Directory   "/www/oklaoshi/htdocs/root_admin">
    AuthName Root_Admin
    Require user Root_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
   #後臺管理關閉重寫引擎
    RewriteEngine Off
  </Directory>
</VirtualHost>
<VirtualHost *:80>
#(數據庫管理服務器(phppgadmin))
  #文檔樹根目錄、主機名和別名
   DocumentRoot /www/phppgadmin
    ServerName   dbadmin.oklaoshi.org
    ServerAlias  dbadmin.oklaoshi.net dbadmin.oklaoshi.com dbadmin.oklaoshi.cn
    #關閉重寫引擎
     RewriteEngine Off
    #修改主服務器設置
     AddDefaultCharset Off
     LimitRequestBody 5242880
     DirectorySlash On
     DirectoryIndex index.html index.htm index.php
    #重新設置PHP的一些特性
     php_admin_value  open_basedir "/www/phppgadmin"
     php_admin_flag   display_errors   Off
     php_admin_flag   display_startup_errors   Off
     php_admin_flag   html_errors   Off
    #php_admin_flag   log_errors   Off
     php_admin_value  max_execution_time   15
     php_admin_value  memory_limit   16M
     php_admin_value  max_input_time   600
     php_admin_value  max_input_nesting_level   32
     php_admin_value  post_max_size   4M
     php_admin_flag   file_uploads On
     php_admin_value  upload_max_filesize   4M
     php_admin_value  arg_separator.output  "&"
     php_admin_value  arg_separator.input   "&"
     php_admin_value  variables_order   "GPCS"
     php_admin_flag   implicit_flush    Off
     php_admin_value  output_buffering  8192
     php_admin_value  include_path  "."
     php_admin_value  default_charset   none
     php_admin_flag   detect_unicode   Off
     php_admin_value  ignore_user_abort  On
     php_admin_value  session.name  "DBADMINSESSIONID"
     php_admin_value  session.referer_check  "dbadmin.oklaoshi."
     php_admin_value  mbstring.func_overload   0
  <Directory   "/www/phppgadmin">
    AuthName DB_Admin
    Require user DB_Admin
    Satisfy all
    Order Allow,Deny
    Allow from all
  </Directory>
</VirtualHost>


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