天天看點

Apache詳細配置

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