明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

APACHE(3)

[摘要]3.21 Port 指令 語法: Port 數(shù)字 預設: Port 80 用於: server config 狀態(tài): 核心 這個 Port 指令設定服務器監(jiān)聽的網(wǎng)路端口號。數(shù)字是 0 到 65535...
3.21 Port 指令

語法: Port 數(shù)字
預設: Port 80
用於: server config
狀態(tài): 核心

這個 Port 指令設定服務器監(jiān)聽的網(wǎng)路端口號。數(shù)字是 0 到 65535 的
一個數(shù)目;某些端口號(特別是低於 1024 的)保留給特殊的協(xié)定。參閱
/etc/services 里定義的一些端口的列表;標準 http 協(xié)定使用 80 端口。

Port 80 是 Unix's 的一個特別端口。所有低於 1024 的端口號都是保留給
系統(tǒng)使用的,例如,一般使用者(non-root)不能使用它們;取而代之的
是他們可以使用較高的端口號。

要使用 80 端口你必須以 root 帳號啟動服務器。在連接到該端口後,接受
請求之前,阿帕奇將會切換為藉由 User 指令所設定權限較低的使用者
身分。

如果你不能使用 80 端口,選擇任何其它沒有使用到的端口。非 root 使用
者必須選擇高於 1023 的端口號,像是 8000 。

安全: 如果你是以 root 啟動服務器,確定不要把 User 設為 root 。
如果你以 root 身分處理連線的話,你的站臺可能會暴露在攻擊下。


3.22 require 指令

語法: require 項目名稱 項目 項目 ...
用於: directory, .htaccess
需求: AuthConfig
狀態(tài): 核心

這個指令選擇經(jīng)過驗認可以存取目錄的使用者。允許使用的語法是:

。require user 使用者辨識碼 使用者辨識碼 ...
只有注明的使用者能存取該目錄。

。require group 群組名稱 群組名稱 ...
只有在注明群組里的使用者能存取該目錄。

。require valid-user
所有合法的使用者都可以存取該目錄。

如果 require 出現(xiàn)在 節(jié)段里,那麼它會限制所注明的存取
方式,否則它會限制所有的存取方式。例如:

AuthType Basic
AuthName somedomain
AuthUserFile /web/users
AuthGroupFile /web/group
Limit <GET POST>
require group admin


Require 必須藉由 AuthName 以及 AuthType 這些指令,以及配合像是
AuthUserFile 以及 AuthGroupFile 指令(用來定義使用者與群組)
以便正確運作。


3.23 ResourceConfig 指令

語法: ResourceConfig 文件名稱
預設: ResourceConfig conf/srm.conf
用於: server config, virtual host
狀態(tài): 核心

此服務器讀取 httpd.conf 文件之後將會繼續(xù)讀取這個文件以取得更多
指令。文件名稱系相對於 ServerRoot 路徑。此特色可以使用如下的方
式關閉:

ResourceConfig /dev/null

原本這個文件包含大部分指令,除了服務器配置及 <Directory> 節(jié)區(qū)
以外;事實上它現(xiàn)在可以包含任何可以用於服務器配置的指令。


3.24 ServerAdmin 指令

語法: ServerAdmin 電子郵件地址
用於: server config, virtual host
狀態(tài): 核心

ServerAdmin 設定電子郵件地址,服務器回傳任何錯誤訊息給客戶端時
會包含這個地址。

設定一個像這樣的地址可能會有用,例如

ServerAdmin www-admin@foo.bar.com

因為使用者并不會永遠知道他們是跟在哪臺服務器打交道!


3.25 ServerName 指令

語法: ServerName 完整的領域名稱
用於: server config, virtual host
狀態(tài): 核心

這個 ServerName 指令設定服務器的主機名稱;這只有在建立重導 URL
的時候使用。如果沒有指定它,那麼服務器會試圖從其 IP 位址來決定
;然而這個方法可能不能信賴,或者無法回傳適當?shù)闹鳈C名稱。例如:

ServerName www.wibble.com

如果正式(canonical) 名稱是 monster.wibble.com 它還能夠使用上述
的名稱。


3.26 ServerRoot 指令

語法: ServerRoot 目錄名稱
預設: ServerRoot /usr/local/etc/httpd
用於: server config
狀態(tài): 核心

這個 ServerRoot 指令設定服務器所在的目錄。它典型會包含有子目錄
conf/ 以及 logs/ 。其它配置檔的相對路徑是相對於這個路徑。


3.27 ServerType 指令

語法: ServerType 型態(tài)
預設: ServerType standalone
用於: server config
狀態(tài): 核心

這個 ServerType 指令設定系統(tǒng)如何執(zhí)行這個服務器。型態(tài)可以是其中
之一:

inetd
服務器將由系統(tǒng)程序 inetd 執(zhí)行;啟動服務器使用的命令加在
/etc/inetd.conf 文件里。

standalone
服務器將會作為服務程序(daemon)執(zhí)行;啟動服務器使用的命令
加在系統(tǒng)啟動指令稿里(/etc/rc.local or /etc/rc.d/...)。

inetd 在這兩個選項里是較少使用的。因為接收到每個 http 連線就會
重頭開始執(zhí)行一份新的服務器拷貝;連線結束後,這支程序就會結束。
每次連線要付出的代價很高,但是因為安全上的理由,某些管理者喜歡
這個選項。

standalone 是 ServerType 使用最普遍的設定,因為它更為有效率。
服務器啟動一次,而且服務所有的連線。如果你想要執(zhí)行阿帕奇來服務
一個忙碌的站臺, standalone 大概將會是你唯一的選擇。

安全: 如果你對安全性有偏執(zhí),以 inetd 模式來執(zhí)行它。兩種方式都
不能絕對確保安全性,但是大部分人使用 standalone 用得很高興時,
inetd 大概比較不會遭到攻擊。


3.28 StartServers 指令

語法: StartServers 數(shù)字
預設: StartServers 5
用於: server config
狀態(tài): 核心

這個 StartServers 指令設定啟動時建立的子服務程序數(shù)量。因為程序
的數(shù)量是依據(jù)負載動態(tài)控制的,通常沒有什麼理由得要調(diào)整這個參數(shù)。

參閱 MinSpareServers 以及 MaxSpareServers 。


3.29 TimeOut 指令

語法: TimeOut 數(shù)字
預設: TimeOut 1200
用於: server config
狀態(tài): 核心

TimeOut 這個指令設定服務器接收一個請求以及完成一個請求最長的等
待時間,以秒為單位。所以如果它花費比 TimeOut 更多秒來讓客戶端
傳送請求或接收回應,服務器將會中斷該連線。因此 TimeOut 限制一
次可以傳輸?shù)淖畲筚Y料量;對於大文件,以及慢速網(wǎng)路傳輸時間可能會
很久。


3.30 User 指令

語法: User 使用者辨識碼
預設: User #-1
用於: server config
狀態(tài): 核心

User 這個指令設定服務器用來回答請求的使用者辨識碼。為了要能夠
使用這個指令,必須以 root 身分起始執(zhí)行獨立的服務器。Unix使用者
辨識碼可以是其中之一:

一個使用者名稱
藉由名稱參照給定的使用者。

# 跟隨著使用者編號
藉由使用這個編號參照他們。

這個使用者應該不能有存取外界所不能看到的文件的權限,而且與此類
似,這個使用者應該不能執(zhí)行對 httpd 要求而言沒有意義的程序碼。
建議你特別為執(zhí)行這個服務器設立新的使用者以及群組。某些管理者使
用 nobody 但是這并非永遠可行或合適的。

注意: 如果你以非 root 使用者的身分啟動這個服務器,它將無法切換
到權限較低的使用者,并且取而代之的是它將會繼續(xù)以原使用者身份來
執(zhí)行。如果你真的是以 root 啟動這個服務器,那麼這個父程序一般仍
然以 root 身分在執(zhí)行。

安全: 不要把 User(or Group) 設為 root 除非你確實知道你在做什麼
以及會有怎麼樣的危險。


3.31 <VirtualHost> 指令

語法: <VirtualHost 位址>...</VirtualHost>
用於: 服務器配置
位於: 核心部份

<VirtualHost> 以及 </VirtualHost> 用來把一組指令包裝起來,這些
指令將只會應用到某個特定的虛擬主機上。任何可用於虛擬主機的指令
都可以使用。當服務器接收到某個特定主機上的文件請求的時候,它會
使用包裝在 <VirtualHost> 節(jié)段里的配置指令。位址可以是

。虛擬主機的 IP 位址
。虛擬主機的 IP 位址的完整領域名稱。

□例:

<VirtualHost host.foo.com>
ServerAdmin webmaster@host.foo.com
DocumentRoot /www/docs/host.foo.com
ServerName host.foo.com
ErrorLog logs/host.foo.com-error_log
TransferLog logs/host.foo.com-access_log
</VirtualHost>

目前,每段 VirtualHost 必須符合服務器不同的 IP 位址,所以服務
機器必須配置成能夠接收多個位址的 IP 封包。如果該機器并沒有多個
網(wǎng)路界面,那麼這可以配合 ifconfig alias 指令來完成(如果你的作
業(yè)系統(tǒng)支援這個功能),或是配合像是 VIF(for SunOS(TM)4.1.x)一類
的核心修補檔。


第四章

阿帕奇標準模組


4.1 mod_access 模組

這個模組包含在 mod_access.c 文件里,而且依預設會編譯進去。它提
供以客戶端主機名稱或 IP 位址為基礎的存取控制。


4.1.1 allow

語法: allow from 主機 主機 ...
用於: directory, .htaccess
需求: Limit
狀態(tài): 基礎
模組: mod_access

allow 這個指令影響能夠存取某特定目錄的主機;典型是用在
節(jié)區(qū)里。主機可以是下列之一:

all
允許所有的主機存取。

(部份)領域名稱
允許名稱為此字串或以此字串結束的主機存取。

完整的 IP 位址
允許該 IP 位址的主機存取。

部份的 IP 位址
某個 IP 位址第一到第三個位元組,作為子網(wǎng)路限制之用。

□例:

allow from .ncsa.uiuc.edu

允許在指定領域里的所有主機進行存取。

注意這比較的是整個的內(nèi)容;所以 bar.edu 不會符合 foobar.edu 。

參閱 deny 以及 order 指令。


4.1.2 deny

語法: deny from 主機 主機 ...
用於: directory, .htaccess
需求: Limit
狀態(tài): 基礎
模組: mod_access

deny 這個指令影響能夠存取某特定目錄的主機;典型是用在
節(jié)區(qū)里。主機可以是下列之一:

all
拒絕所有的主機存取

(部份)的領域名稱
拒絕名稱為此字串或以此字串結束的主機存取。

完整的 IP 位址
拒絕該 IP 位址的主機存取。

部份的 IP 位址
某個 IP 位址第一到第三個位元組,作為子網(wǎng)路限制之用。

□例:

deny from 16

拒絕在指定網(wǎng)路里的所有主機進行存取。

注意這比較的是整個的內(nèi)容;所以 bar.edu 不會符合 foobar.edu 。

參閱 allow 以及 order 指令。


4.1.3 order

語法: order 次序
預設: order deny, allow
用於: directory, .htaccess
需求: Limit
狀態(tài): 基礎
模組: mod_access

order 這個指令控制評估 allow 以及 deny 指令的次序。次序可以是
其中之一:

deny,allow
在 allow 指令之前評估 deny 指令

allow,deny
在 deny 指令之前評估 allow 指令

mutual-failue
只有那些出現(xiàn)在 allow 列表里而且沒有出現(xiàn)在 deny 列表里的
主機可以進行存取。

□例:

order deny,allow deny from all allow from .ncsa.uiuc.edu

允許在 ncsa.uiuc.edu 這個領域里的主機進行存取;拒絕所有其它的
主機存取。


4.2 mod_alias 模組

這個 mod_alias 模組包含在 mod_alias.c 文件里,而且依預設會編
譯進去。它提供的功能是對映主機文件系統(tǒng)的不同部份到文件樹去,及
URL 轉(zhuǎn)向。


4.2.1 Alias

語法: Alias url-路徑 目錄-文件名稱
用於: server config, virtual host
狀態(tài): 基礎
模組: mod_alias

Alias 這個指令使文件可以存放在 DocumentRoot 之外的本地文件系統(tǒng)
里。以 url-路徑 開始的 URLs 將會被對映到以 目錄-文件名稱 開始
的本地文件去。例如:

Alais /image /ftp/pub/image

對於 http://myserver/images/foo.gif 的這個請求會使得服務器回傳
文件 /ftp/pub/image/foo.gif 。

參閱 ScriptAlias 指令。


4.2.2 Redirect

語法: Redirect url-路徑 url
用於: server config, virtual host
狀態(tài): 基礎
模組: mod_alias

Redirect 這個指令對映舊的 URL 到新的去。新的 URLs 會被回傳給
客戶端以便配合新的位址再次嘗試擷取。Url-路徑 (%-decoded)路徑;
任何以這個路徑作為開始的文件請求都將回傳一個錯誤并重導到以 url
作為開始的新(%-encoded) url 去。例如:

Redirect /service http://foo2.bar.com/service

如果客戶端請求 http://myserver/service/foo.txt 則會被告知應該
擷取 http://foo2.bar.com/service/foo.txt 來取代。

注意: 無論配置檔里的次序如何,Redirect 指令優(yōu)先於 Alias 以及
ScriptAlias 指令。


4.2.3 ScriptAlias

語法: ScriptAlias url-路徑 目錄-文件名稱
用於: server config, virtual host
狀態(tài): 基礎
模組: mod_alias

ScriptAlias 這個指令除了還另外把目標目錄標記為包含 CGI 指令稿
以外其功能與 Alias 指令相同,以 url-路徑 作為開始的 URLs 將會
被對映到以 目錄-文件名稱 作為開始的指令稿去。例如:

ScriptAlias /cgi-bin/ /web/cgi-bin/

對於 http://myserver/images/foo 的這個請求會使服務器去執(zhí)行指令
稿 /web/cgi-bin/foo 。


4.3 mod_asis 模組

這個模組包含在 mod_asis.c 文件里,而且依預設會編譯進去。它是為
.asis 文件而提供的。任何 mime 型態(tài)為 httpd/send-as-is 的文件都
將由這個模組處理。


4.3.1 目的

允許定義文件的型態(tài),如此阿帕奇可以不加 HTTP 標頭(headers) 傳送
它們。

這可以用來從服務器傳送任何型態(tài)的資料,包括重導(redirects) 以及
其它特殊的 HTTP 回應,而不需要 cgi-script 或是 nph script 。


4.3.2 用法

在服務器配置檔里,定義一個稱為 httpd/send-as-is 的 mime 型態(tài),
例如

AddType httpd/send-as-is asia

這定義 .asis 副文件名是新的 httpd/send-as-is mime 型態(tài)。任何副
文件名是 .asis 的文件內(nèi)容由阿帕奇送出給客戶端時幾乎不會有任何的
改變。客戶端將需要 HTTP 標頭來聯(lián)系,所以別忘記它們。 A Status:
仍然需要標頭;此資料應該是 3位數(shù)字的 HTTP 回應碼,跟隨一段文字
訊息。

這里有個示例檔,其內(nèi)容是告訴客戶端有個文件被重定向送出。

Status: 302 Now where did I leave that URL
Location: http://xyz.abc.com/foo/bar.html
content-type: text/html


<HEAD>
<TITLE>Lame execuses`R'us</TITLE>
</HEAD>
<BODY>
<H1>Fred's exceptionally wonderful page has moved to
<A HREF="http://xyz.abc.com/foo/bar.html">Joe's</A>site
</H1>
</BODY>


注意: 服務器一定會在送給客戶端的資料里加上 Date: 以及 Server:
標頭,所以不應該包含在這個文件里。服務器不會加上 Last-Modified
標頭,所以應該要才對。


4.4 mod_auth 模組

這個模組包含在 mod_auth.c 文件里,而且依預設會編譯進來。它提供
的功能是使用文字文件來執(zhí)行使用者驗認。


4.4.1 AuthGroupFile

語法: AuthGroupFile 文件名稱
用於: directory, .htaccess
需求: AuthConfig
狀態(tài): 基礎
模組: mod_auth

AuthGroupFile 這個指令設定一個文本文件的名稱,這個文本文件包含用來
執(zhí)行使用者驗認的使用者群組列表。文件名稱是群組文件的絕對路徑。

這個群組文件的每一行包括一個群組名稱,跟隨一個冒號,其後是藉由
空白隔開的使用者名稱。例如:

mygroup: bob joe anne

注意搜尋很大的群組文件是很沒有效率的;應該用 AuthDBMGroupFile
來取代它。

安全: 確定這個 AuthGroupFile 儲放在服務器的文件樹之外;不要把
它放在它保護的目錄里。否則,客戶端將能夠下載這個 AuthGrpupFile
文件。

參閱 AuthName, AuthType 以及 AuthUserFile 。


4.4.2 AuthUserFile

語法: AuthUserFile 文件名稱
用於: directory, .htaccess
需求: AuthConfig
狀態(tài): 基礎
模組: mod_auth

這個 AuthUserFile 指令設定一個文本文件的名稱,這個文本文件包含用來
執(zhí)行使用者驗認的使用者以及密碼列表。文件名稱是到群組文件的絕對
路徑。

這個使用者文件的每一行包括一個使用者名稱,跟隨一個冒號,其後是
藉由 crypt() 加密過的密碼。多個相同使用者的情況沒有定義。

注意搜尋很大的使用者文件是很沒有效率的;應該用 AuthDBMUserFile
來取代它。

安全: 確定這個 AuthUserFile 儲放在服務器的文件樹之外;不要把它
放在它所保護的目錄里。否則,客戶端將能夠下載這個 AuthUserFile
文件。

參閱 AuthName, AuthType 以及 AuthGroupFile 。





標簽:APACHE(3)