Apache系結指定地址與埠


本教學將介紹如何組態Apache以監聽指定地址和埠。

當Apache啟動時,它會系結到本地計算機上的某個埠和地址,並等待傳入的請求。預設情況下,它會監聽計算機上的所有地址。但是,可能需要告知監聽特定埠,或僅監聽選定地址,或兩者的組合。這通常與虛擬主機功能結合使用,後者確定Apache如何響應不同的IP地址,主機名和埠。

Listen指令告訴伺服器僅接受指定埠或地址和埠組合的傳入請求。如果在Listen指令中僅指定了埠號,則伺服器將監聽所有介面上的給定埠。如果給出IP地址和埠,伺服器將監聽給定的埠和介面。可以使用多個Listen指令來指定要監聽的多個地址和埠。伺服器將響應來自任何列出的地址和埠的請求。

例如,要使伺服器接受埠80和埠8000上的連線,請在所有介面上使用:

Listen 80
Listen 8000

要使伺服器接受指定IP埠80和埠8000上的連線,請使用 -

Listen 192.0.2.1:80
Listen 192.0.2.5:8000

IPv6地址必須用方括號括起來,如下例所示:

Listen [2001:db8::a00:20ff:fea7:ccea]:80

IPv6注意事項

越來越多的平台實現IPv6,APR在大多數平台上支援IPv6,允許Apache分配IPv6通訊端,並處理通過IPv6傳送的請求。

Apache管理員的一個複雜因素是IPv6通訊端是否可以同時處理IPv4連線和IPv6連線。使用IPv6通訊端處理IPv4連線使用IPv4對映的IPv6地址,這些地址在大多數平台上是預設允許的,但在FreeBSD,NetBSD和OpenBSD上預設是不允許的,以便匹配這些平台上的系統範圍策略。在預設情況下不允許它的系統上,指定configure引數可以更改Apache的此行為。

另一方面,在某些平台上,例如Linux和Tru64,處理IPv6和IPv4的唯一方法是使用對映地址。如果希望Apache使用最少的通訊端來處理IPv4和IPv6連線,這需要使用IPv4對映的IPv6地址,請指定--enable-v4-mapped configure選項。

--enable-v4-mapped是除FreeBSD,NetBSD和OpenBSD之外的所有平台的預設設定,因此它就是構建Apache的方式。

如果您希望Apache僅處理IPv4連線,無論平台和APR支援什麼,請在所有Listen指令上指定IPv4地址,如以下範例所示:

Listen 0.0.0.0:80
Listen 192.0.2.1:80

如果您的平台支援它並且希望Apache在單獨的通訊端上處理IPv4和IPv6連線(即,禁用IPv4對映的地址),請指定--disable-v4-mapped configure選項。--disable-v4-mapped是FreeBSD,NetBSD和OpenBSD的預設設定。

如何使用虛擬主機

Listen指令不實現虛擬主機 - 它只告訴主伺服器要監聽的地址和埠。如果未使用<VirtualHost>指令,則伺服器對所有已接受的請求的行為方式相同。但是,<VirtualHost>可用於為一個或多個地址或埠指定不同的行為。要實現VirtualHost,必須首先告訴伺服器監聽要使用的地址和埠。然後,應為指定的地址和埠建立<VirtualHost>部分,以設定此虛擬主機的行為。請注意,如果為伺服器未偵聽的地址和埠設定<VirtualHost>,則無法存取它。