本教程将介绍如何配置Apache以监听指定地址和端口。
当Apache启动时,它会绑定到本地计算机上的某个端口和地址,并等待传入的请求。默认情况下,它会监听计算机上的所有地址。但是,可能需要告知监听特定端口,或仅监听选定地址,或两者的组合。这通常与虚拟主机功能结合使用,后者确定Apache如何响应不同的IP地址,主机名和端口。
Listen
指令告诉服务器仅接受指定端口或地址和端口组合的传入请求。如果在Listen
指令中仅指定了端口号,则服务器将监听所有接口上的给定端口。如果给出IP地址和端口,服务器将监听给定的端口和接口。可以使用多个Listen
指令来指定要监听的多个地址和端口。服务器将响应来自任何列出的地址和端口的请求。
例如,要使服务器接受端口80
和端口8000
上的连接,请在所有接口上使用:
Listen 80
Listen 8000
Shell
要使服务器接受指定IP端口80
和端口8000
上的连接,请使用 -
Listen 192.0.2.1:80
Listen 192.0.2.5:8000
Shell
IPv6地址必须用方括号括起来,如下例所示:
Listen [2001:db8::a00:20ff:fea7:ccea]:80
Shell
越来越多的平台实现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
Shell
如果您的平台支持它并且希望Apache在单独的套接字上处理IPv4和IPv6连接(即,禁用IPv4映射的地址),请指定--disable-v4-mapped configure
选项。--disable-v4-mapped
是FreeBSD,NetBSD和OpenBSD的默认设置。
Listen指令不实现虚拟主机 - 它只告诉主服务器要监听的地址和端口。如果未使用<VirtualHost>
指令,则服务器对所有已接受的请求的行为方式相同。但是,<VirtualHost>
可用于为一个或多个地址或端口指定不同的行为。要实现VirtualHost
,必须首先告诉服务器监听要使用的地址和端口。然后,应为指定的地址和端口创建<VirtualHost>
部分,以设置此虚拟主机的行为。请注意,如果为服务器未侦听的地址和端口设置<VirtualHost>
,则无法访问它。