注:此文複製而來,只爲便於學習!php
Apache的配置指令分爲兩類:一類由核心模塊如core,http等使用,必須位置httpd.conf文件中,另外一類由標準或三方模塊使用html
1 基本配置指令web
httpd.conf中的配置能夠三爲分部分:主服務器部分、容器配置部分、擴展部分正則表達式
主服務器部分:用來配置服務的核心參數,做爲全局指令,如定義主機名、監聽端口等apache
容器配置部分:以<容器名>...</容器名>樣式包圍的配置部分,如虛擬主機、目錄、文件權限windows
擴展部分:以include方式加載的外部配置文件安全
1.1 主服務器配置服務器
ServerName 定義主機名,若無,則以IP地址代替網絡
ServerRoot 定義httpd服務器進程所安裝在的根目錄,在選擇不一樣的layout時,其值是不一樣的工具
DocumentRoot 定義提供頁面文檔的根目錄,此目錄是收到URL請求的根目錄,必須用絕對路徑,若路徑中包含空格則須要加引號
ServerAdmin 指定網站管理員的郵件地址
Alias/ScriptAlias 定義別名
User/Group 指定服務器進程運行的用戶名及組
Listen 指定服務器監聽的端口
LoadModule/LoadFile 加載模塊或目標文件
ErrorDocument code content 指定錯誤碼的處理頁面或內容,頁面能夠是腳本或字符串
Options 用於指定在目錄的處理特性,其有如下值,這些值能夠經過+ -來組合
ExecCGI 容許當前目錄下執行CGI腳本
Includes 容許使用SSI功能
Indexes 開戶索引功能,即目錄若沒有由DirecotryIndex指令指定索引文件,則返回請求目錄的文件列表
FollowSymLinks 容許目錄使用符號連接
ALL 除MultiViews以外 的全部特性
MultiViews 啓用mod_negotiations模塊提供的多視圖功能
1.2 容器配置部分
值得注意的是容器配置能夠根據需求嵌套。
<ifModule !模塊名> 判斷module是否加載,並根據真假決定是否執行容器內配置,模塊名能夠加!表示未加載
<ifDefine Def> 判斷Def是否認義,並根據真假決定是否執行容器內配置,Def前加!表示未定義
<Directory dir> 區域中的配置僅對dir生效,用來限定配置範圍或覆蓋全局配置。目錄能夠是完整路徑,也能夠是通配符匹配目錄,須要注意的是* ? []不能跨/
若是須要使用正則匹配,則在表達式前加 ~
<DirectoryMatch> 同上,只是其接受正則表達式時,不須要加~
<File> 只針對文件定義
<FileMatch> 同上
<Location> 對網絡URL進行訪問控制
<LocationMatch> 同上,可接受正則匹配
須要注意的地方是,容器規則在應用時是有優先級的,apache處理是從優先級高到低以下處理:direcotry .htacess direcotryMatch file fileMatch Location 高優先級規則會使得低優先級規則失效。同時Directory容器處理順序按目錄名稱的字典排序進行。這些規則混用或使用不當會形成安全性問題,所以不建議使用複雜的規則。 對於文件和目錄在使用時要注意限制符號連接。
1.3 擴展部分
在Apache默認配置文件夾中有一個extra目錄,其中定義了其餘模塊的經常使用配置,能夠經過Include指令加載進來
常見的配置功能以下
httpd-autoindex.conf 自動索引配置
httpd-info.conf mod_status info模塊的配置
httpd-mpm.conf mpm的配置
httpd-ssl.conf ssl配置
httpd-userdir.conf 用戶目錄配置,用於在一臺服務器上爲多個用戶提供Web站點,將用戶映射到其本身的目錄下
httpd-vhosts.conf 虛擬主機配置
1.3.1 mod-dir
此模塊支持用戶指定index文件的功能,配置以下:
DirectoryIndex index.html index.PHP
這樣,當用戶訪問根目錄時,若下面存在對應的文件,則服務器會重給用戶重定向到索引文件頁面
1.3.2 mod-autoindex
1.3.3 mod-userdir
1.4 配置工具
本地化工具webmin須要安裝到本地,並經過網頁打開,能夠進行GUI方式的設置
windows下zecos Apacheconf能夠SSH方式讀取遠程HTTPD.CONF來顯示配置
2 虛擬主機配置
虛擬主機可讓咱們在一個機器上開放多個網站,實現經過不一樣的域名或IP訪問時定向到不一樣的網站頁面上。
2.1 命名虛擬主機
基於域名的虛擬主機功能開啓後,服務器能夠根據請求中的HOST頭部來定向到不一樣的站點,須要DNS配置協做方可應用。
其配置比較簡單,下面的示例爲一個簡單的例子
這裏創建了一個網站,其監聽本地全部80的請求,但此虛擬主機只提供關於dummy.example.com的網站服務,因爲採用了別名,也能夠採用別名來訪問,但前提是配置了DNS的相關記錄。須要注意的是,若是採用IPV6地址,則地址應該放在中括號中。
基於命名的虛擬主機不支持HTTP1.0以及以前的協議,而且不支持SSL協議 (SSL協議須要獨立的主機名與IP匹配)。若須要支持SSL,則須要監聽443端口,並在此端口上創建站點服務。具體能夠參考httpd_ssl.conf文件的示例。
2.2 IP虛擬主機
IP虛擬主機須要咱們的服務器主機配置多個IP地址,咱們將不一樣的網站配置到不一樣的IP地址上,IP地址能夠是同一個物理網卡的多個虛擬接口地址。
其配置方式以下:
2.3 動態虛擬主機的方法
其餘的方法如經過vhost_alias_module模塊或者rewrite_module創建大量虛擬主機,通常網站提供商纔會用到這種功能,不在此詳細描述,能夠參考apache的相關文檔。
3 性能相關配置
4 日誌控制