本教程將介紹如何配置Apache以監(jiān)聽(tīng)指定地址和端口。
當(dāng)Apache啟動(dòng)時(shí),它會(huì)綁定到本地計(jì)算機(jī)上的某個(gè)端口和地址,并等待傳入的請(qǐng)求。默認(rèn)情況下,它會(huì)監(jiān)聽(tīng)計(jì)算機(jī)上的所有地址。但是,可能需要告知監(jiān)聽(tīng)特定端口,或僅監(jiān)聽(tīng)選定地址,或兩者的組合。這通常與虛擬主機(jī)功能結(jié)合使用,后者確定Apache如何響應(yīng)不同的IP地址,主機(jī)名和端口。
Listen指令告訴服務(wù)器僅接受指定端口或地址和端口組合的傳入請(qǐng)求。如果在Listen指令中僅指定了端口號(hào),則服務(wù)器將監(jiān)聽(tīng)所有接口上的給定端口。如果給出IP地址和端口,服務(wù)器將監(jiān)聽(tīng)給定的端口和接口??梢允褂枚鄠€(gè)Listen指令來(lái)指定要監(jiān)聽(tīng)的多個(gè)地址和端口。服務(wù)器將響應(yīng)來(lái)自任何列出的地址和端口的請(qǐng)求。
例如,要使服務(wù)器接受端口80和端口8000上的連接,請(qǐng)?jiān)谒薪涌谏鲜褂茫?/p>
Listen 80 Listen 8000
Shell
要使服務(wù)器接受指定IP端口80和端口8000上的連接,請(qǐng)使用 -
Listen 192.0.2.1:80 Listen 192.0.2.5:8000
Shell
IPv6地址必須用方括號(hào)括起來(lái),如下例所示:
Listen [2001:db8::a00:20ff:fea7:ccea]:80
Shell
越來(lái)越多的平臺(tái)實(shí)現(xiàn)IPv6,APR在大多數(shù)平臺(tái)上支持IPv6,允許Apache分配IPv6套接字,并處理通過(guò)IPv6發(fā)送的請(qǐng)求。
Apache管理員的一個(gè)復(fù)雜因素是IPv6套接字是否可以同時(shí)處理IPv4連接和IPv6連接。使用IPv6套接字處理IPv4連接使用IPv4映射的IPv6地址,這些地址在大多數(shù)平臺(tái)上是默認(rèn)允許的,但在FreeBSD,NetBSD和OpenBSD上默認(rèn)是不允許的,以便匹配這些平臺(tái)上的系統(tǒng)范圍策略。在默認(rèn)情況下不允許它的系統(tǒng)上,指定configure參數(shù)可以更改Apache的此行為。
另一方面,在某些平臺(tái)上,例如Linux和Tru64,處理IPv6和IPv4的唯一方法是使用映射地址。如果希望Apache使用最少的套接字來(lái)處理IPv4和IPv6連接,這需要使用IPv4映射的IPv6地址,請(qǐng)指定--enable-v4-mapped configure選項(xiàng)。
--enable-v4-mapped是除FreeBSD,NetBSD和OpenBSD之外的所有平臺(tái)的默認(rèn)設(shè)置,因此它就是構(gòu)建Apache的方式。
如果您希望Apache僅處理IPv4連接,無(wú)論平臺(tái)和APR支持什么,請(qǐng)?jiān)谒蠰isten指令上指定IPv4地址,如以下示例所示:
Listen 0.0.0.0:80 Listen 192.0.2.1:80
Shell
如果您的平臺(tái)支持它并且希望Apache在單獨(dú)的套接字上處理IPv4和IPv6連接(即,禁用IPv4映射的地址),請(qǐng)指定--disable-v4-mapped configure選項(xiàng)。--disable-v4-mapped是FreeBSD,NetBSD和OpenBSD的默認(rèn)設(shè)置。
Listen指令不實(shí)現(xiàn)虛擬主機(jī) - 它只告訴主服務(wù)器要監(jiān)聽(tīng)的地址和端口。如果未使用<VirtualHost>指令,則服務(wù)器對(duì)所有已接受的請(qǐng)求的行為方式相同。但是,<VirtualHost>可用于為一個(gè)或多個(gè)地址或端口指定不同的行為。要實(shí)現(xiàn)VirtualHost,必須首先告訴服務(wù)器監(jiān)聽(tīng)要使用的地址和端口。然后,應(yīng)為指定的地址和端口創(chuàng)建<VirtualHost>部分,以設(shè)置此虛擬主機(jī)的行為。請(qǐng)注意,如果為服務(wù)器未偵聽(tīng)的地址和端口設(shè)置<VirtualHost>,則無(wú)法訪問(wèn)它。
更多建議: