/ 中存储网

配置Apache监听指定的地址和端口

2013-10-26 09:00:01 来源:itjs.cn

Apache启动时,会绑定本机上的某些地址和端口,并等待请求进入。缺省情况下,它会监听本机的所有地址。但是,要监听指定的地址和端口或者某种组合,尤其是在使用虚拟主机,对不同的IP、主机名和端口作出不同响应时,则必须明确指出。

Listen指令告诉服务器接受来自指定端口或者地址+端口的请求。如果Listen指令仅指定了端口,服务器会监听所有的地址;如果指定了地址+端口,则服务器只监听来自此地址和端口的请求。多个Listen指令,可以指定多个地址和端口。

例如:使服务器接受来自端口80和8000的请求,可以这样写:

接受来自两个指定的地址+端口:

Listen 192.170.2.1:80

Listen 192.170.2.5:8000

IPv6 的地址必须用方括号括起来:

Listen [fe80::a00:20ff:fea7:ccea]:80

如今有越来越多的平台支持IPv6, 而APR在大多数平台上也支持IPv6, 使Apache能够获得IPv6套接字,并处理通过IPv6发送的请求。

令Apache管理员疑惑的是IPv6的套接字能否同时处理IPv4和IPv6的连接。 IPv6套接字处理IPv4的连接时使用的是映射到IPv4的IPv6地址, 大多数平台默认是允许的,而在FreeBSD, NetBSD 和OpenBSD上, 为了配合其系统全局策略,默认却是禁用的。但是,即使在这些默认是禁用的平台上, 也可以采用特殊的配置参数为Apache改变这种行为。

要使Apache以最少的套接字处理IPv4 和IPv6 的连接, 需要使用映射到IPv4的IPv6地址,则必须指定配置选项--enable-v4-mapped, 并使用通用的Listen指令,如下:

有了--enable-v4-mapped, Apache产生的默认配置文件中的Listen指令将是这种形式。 除了FreeBSD, NetBSD和OpenBSD,--enable-v4-mapped是所有平台的默认值。

要使Apache只处理IPv4连接,无论你的平台是什么抑或APR是否支持, 只须对Listen指令指定一个IPv4的地址,即可,如下:

Listen 0.0.0.0:80

Listen 192.170.2.1:80

要使Apache以不同的套接字分别处理IPv4和IPv6的连接(也就是,禁用映射到IPv4的地址), 必须指定配置选项--disable-v4-mapped,并使用如下特定的Listen指令:

Listen [::]:80

Listen 0.0.0.0:80

有了--disable-v4-mapped, Apache产生的默认配置文件中的Listen指令将是这种形式。 对于FreeBSD, NetBSD和OpenBSD,--disable-v4-mapped是默认值。

Listen指令并不实现虚拟主机,它只是告诉主服务器去监听哪些地址和端口。 如果没有<VirtualHost>指令,服务器对所有请求一视同仁; 但是如果有<VirtualHost>,则服务器会作出不同的响应。 要实现虚拟主机,首先必须告诉服务器需要监听的地址和端口, 然后为特定的地址和端口建立一个<VirtualHost>段。 注意,如果<VirtualHost>段设置为服务器没有监听的地址和端口, 则此段无效。