APACHE(3)
發(fā)表時間:2023-08-19 來源:明輝站整理相關軟件相關文章人氣:
[摘要]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 。