Apache的配置檔案
配置檔案所在目錄:
/etc/httpd/conf/
主配置檔案:
httpd.conf
舊版本中的配置檔案:
資源配置檔案:srm.conf
通路許可權配置檔案:access.conf
AccessConfig和ResourceConfig
為了對舊版本的Apache相容, Apache伺服器在每次啟動時都查找并讀取access.conf和srm.conf檔案的内容。httpd.conf檔案中的 AccessConfig和ResourceConfig指令用于指定access.conf和srm.conf檔案的位置,預設值為:
AccessConfig conf/access.conf ResourceConfig conf/srm.conf
出于安全性的考慮,可以設定為:
AccessConfig /dev/null
ResourceConfig /dev/null
指定這兩個檔案為空裝置檔案“/dev/null ”,這樣可以避免惡意的修改access.conf和srm.conf檔案對系統配置的影響。
配置的内容
1、全局變量
2、配置主伺服器
3、配置虛拟主機
全局變量
1.選擇伺服器啟動類型 ServerType
ServerType standalone | inetd
ServerType用于定義apache伺服器的運作模式,預設值standalone為獨立運作的伺服器,如設定為inetd則由xinetd伺服器負責apache伺服器的啟動。
2.設定伺服器的根目錄 ServerRoot
ServerRoot "/etc/httpd "
ServerRoot用于指定apache伺服器的配置檔案及日志檔案存放的根目錄,預設為目錄"/etc/httpd " 。
3.設定加鎖檔案 <IfModule ! mpm_winnt.c>......
4.設定ScoreBoardFile 維護程序的内部資料,通常不需設定。
5.設定PidFile 指定存儲httpd父程序的PID的檔案
PidFile /var/run/httpd.pid
PidFile用于指定記錄httpd程序号(PID)的檔案位置,預設值為“/var/run/httpd.pid”。
6.設定逾時時間 Timeout
Timeout 300
指定站點響應的秒數。若超過這段時間仍未收到或送出資料,就斷開連接配接。
KeepAlive On|Off
啟用此項,表示允許保持連接配接,讓每次連接配接能提出多個請求。避免每請求一個檔案就跟伺服器建立一次連接配接。
MaxKeepAliveRequests 100
每次連接配接可提出請求的數量,設定為0表示數量不限,預設值為100。
KeepAliveTimeout 15
連續兩個請求之間的時間如果超過15秒還未到達,則視為連接配接中斷。
7.設定伺服器程序數 <IfModule prefork.c>......
<IfModule prefork.c>
MinSpareServers 5
MaxSpareServers 20
提供浏覽服務的httpd程序的數目需要随連接配接數目的多少而變化,是以需要随時保持幾個閑置的httpd程序等候新的連接配接請求。若閑置的程序數少于5個(預設值),則表示閑置程序太少,需要将其增加到5個;若多于20個(預設值)則表示閑置程序太多,需将其減少到20個。
StartServers 8
當apache伺服器啟動時,httpd程序的數目,預設值為8。
MaxClients 150
同僚接入的數目太多時會降低系統通路性能,設定此參數可限制同時連接配接的最大數值,預設值為150。
< /IfModule>
8.設定位址綁定 Listen
Listen 12.34.56.78:80
用于設定apache伺服器監聽指定IP和(或)端口上的連接配接請求。
Listen 80
指定apache伺服器監聽的端口号。
9.選擇子產品 LoadModule ......
載入子產品指令
Apache伺服器采用動态共享對象(DSO,Dynamic Shared Object)的機制,在啟動Apache伺服器時可根據實際需要載入适當的子產品,使其具有相應的功能。
載入子產品的相關指令有:
LoadModule
ClearModuleList
AddModule
LoadModule指令用于動态載入子產品,即将子產品外挂在Apache伺服器上。
文法:
LoadModule 子產品名稱 子產品檔案路徑全名
執行個體:
LoadModule status_module modules/mod_status.so
ClearModuleList
ClearModuleList指令用于清空Apache伺服器内建的子產品清單。通常先使用該指令清空清單,再使用AddModule指令向子產品清單加入子產品。
AddModule
AddModule指令用于向子產品清單加入新的子產品名稱。
文法:
AddModule 子產品
執行個體:
AddModule mod_status.c
10.配置狀态資訊 ExtendedStatus
配置主伺服器
1.設定使用者群組 User和Group
User apache Group apache 設定httpd用哪個使用者帳号群組來啟動,預設使用apache使用者群組。
2.設定Email位址 ServerAdmin
ServerAdmin [email protected]
伺服器管理者的郵件位址,當伺服器運作出錯時将向此郵件位址發信。
3.設定伺服器名 ServerName
ServerName localhost
設定主機的名稱,此名稱會被送到遠端連接配接程式,以取代安裝Apache主機的真實名稱。預設值是localhost,行首加#号,關閉此功能。
4.設定正式名稱 UseCanonicalName
5.設定文檔目錄 DocumentRoot
DocumentRoot "/var/www/html"
指定Apache伺服器存放網頁的文檔根目錄。
6.設定通路選項和覆寫 <Directory />Options ......
容器指令(container directive)通常包括在<>括号内,較容易識别。條件指令<IfDefine>和<IfModule>不是容器指令,他們是例外。常用的容器指令有:
<Directory>
<Files>
<Location>
<VirtualHost>
<Directory>… </Directory>
<Directory /> 設定“/”根目錄的通路權限
Options FollowSymLinks
AllowOverride None
</Directory> 目錄屬性設定結束
使用<Directory>… </Directory>設定指定目錄的通路權限,其中可包含:
Options
AllowOverride
Order
Allow
Deny
五個屬性。
Options屬性
Options FollowSymLinks Indexes MultiViews
Options可以組合設定下列選項:
All:使用者可以在此目錄中作任何事情。
ExecCGI:允許在此目錄中執行CGI程式。
FollowSymLinks:伺服器可使用符号連結指向的檔案或目錄。
Indexes:伺服器可生成此目錄的檔案清單。
None:不允許通路此目錄。
AllowOverride
AllowOverride None
AllowOverride會根據設定的值決定是否讀取目錄中的.htaccess檔案,來改變原來所設定的權限。
All:讀取.htaccess檔案的内容,修改原來的通路權限。
None:不讀取.htaccess檔案
為避免使用者自行建立.htaccess檔案修改通路權限,http.conf檔案中預設設定每個目錄為: AllowOverride None。
AccessFileName
AccessFileName filename
AccessFileName指令用于指定保護目錄設定檔案的檔案名稱,預設值為“.htaccess”。
AccessFileName .acl
Allow
設定允許通路Apache伺服器的主機
Allow from all
允許所有主機的通路
Allow from 202.96.0.97 202.96.0.98
允許來自指定IP位址主機的通路
Deny 設定拒絕通路Apache伺服器的主機 Deny from all 拒絕來自所有主機的通路 Deny from 202.96.0.99 202.96.0.88 拒絕指定IP位址主機的通路
Order Order allow,deny Order用于指定allow和deny的先後次序。
7.設定使用者目錄 UserDir
UserDir public_html
UserDir用于設定使用者個人首頁存放的目錄,預設為“public_html”目錄,即/home/anyuser/public_html。
8.設定目錄索引 DirectoryIndex
DirectoryIndex index.html index.htm index.shtml index.php
DirectoryIndex指令用于指定目錄中預設的索引檔案名稱,可同時指定多個檔案名稱,兩兩之間用空格分割。預設值為index.html。
9.設定通路控制 AccessFileName
AccessFileName .htaccess
定義每個目錄下的通路控制檔案的檔案名,預設為.htaccess ;編輯檔案如下:
<Files>…</Files>
<Files>容器包含隻應用于指定檔案的指令,檔案應該由檔案名(必要時使用統配符)指定。
執行個體:
<Files = “^\.ht”>
Order allow,deny
Deny from all
</Files>
<Location>… </Location>
<Location>容器包含隻應用于特定URL的指令。
執行個體:
<Location /server-status>
SetHandler server-status
order deny,allow
allow from 127.0.0.1
deny from all
</Location>
10.設定MIME類型檔案 TypesConfig
11.配置日志檔案 HostnameLookups
12.設定伺服器資訊 ServerTokens
13.設定目錄别名 Alias
Alias用于設定路徑别名
Alias /doc/ /usr/share/doc/
給“/usr/share/doc/” 設定路徑别名為“/doc/”
14.設定索引選項 AddIconByEncoding 為目錄索引中的不同類型的檔案産生不同的圖示。
15.定義編碼和語言 AddEncoding 定義一些壓縮檔案的MIME類型。
16.添加MIME類型和處理類型 AddType
17.自定義錯誤響應 ErrorDocument
18.設定浏覽器響應 BrowserMatch
建立虛拟Web站點
1、基于IP的虛拟主機的配置
執行個體:
添加不同的IP位址:
# ifconfig eth0:0 192.168.0.2
# route add -host 192.168.0.2 eth0:0
編輯/etc/httd/conf/httpd.conf檔案添加如下内容:
<VirtualHost 192.168.0.2>
ServerAdmin [email protected]
DocumentRoot /var/www/mailserver
ServerName mail.astronomy.org
ErrorLog logs/mailserver error_log
CustomLog logs/mailserver-access_log common
</VirtualHost>
重新開機服務
# /usr/local/apache2/bin/apachectl restart
2、基于域名的虛拟主機的配置
執行個體:在DNS中添加相關的主機記錄;修改httpd.conf 檔案
NameVirtualHost 192.168.0.1
<VirtualHost 192.168.0.1>
ServerAdmin [email protected]
DocumentRoot /var/www/mailserver
ServerName mail.astronomy.org
ErrorLog logs/mailserver error_log
CustomLog logs/nameserver access_log common
</VirtualHost>
重新開機服務
# /usr/local/apache2/bin/apachectl restart