Apache设置监听IP地址与端口

一、概要

当Apache起动后,它默认监听本机所有Ip地址的与Web相关的端口,然而我们可以告诉Apache去监听特定的端口或者只监听特定的IP上的的特定的端口.这个设置经常与需拟主机配合使用,通过配置告诉需拟主机来响应不同的IP地址、域名和端口上的Http请求。 Linsten指令告诉Apache服务器接受特定IP地址的特定端口的Http请求,或所有Ip地址上的特定端口的Http请求,如果Listen后指定了一个特定的端口号,那么apache服务器则监听所有网卡的这个端口.如果Listen指令后也同时设置了IP地址和端口号,那么服务器则监听这个指定的网卡上的端口。可以设置多个Listen指令来指定监听多个IP和端口, 服务器将根据Listen指令设置的Ip地址和端口来响应不同的请求

例如:

如果让服务器接受80和8000端口的请求,使用:

Listen 80

Listen 8000

为了让服务器接受特定网卡上的指定的端口上的请求,使用:

Listen 192.170.2.1:80

Listen 192.170.2.5:8000

IPv6地址需要使用方括号括起来,如:

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

二、IPv6需要注意的事项

越来越多的平台实现了对IPv6的支持,Apache中APR模块也支持大部分已经实现了IPv6的平台,Apache通过APR指定IPv6的套接字来处理通过IPv6发送来Http请求。

对于Apache管理员来说,使用IPv6也带来了一个问题:IPv6的sccket在处理ipv6的请求时,是否也能同时处理IPv4的请求。大部分平台是允许通过IPv6 socket的IPv4映射Ipv6地址来处理IPv4的请求的,但在FreeBSD,NetBSD和OpenBSD平台上,由于受系统策略的影响,这种IPv4映射Ipv6地址的方式是不允许的。 即使系统默认不允许使用IPv4映射Ipv6地址的方式,我们可以通过设置特定的配置参数来让Apache实现这种技术。

另一方面,在部分平台上比如Linux和Tru64上,只能使用IPv6映射IPv4地址的方式来同时处理IPv6和IPv4的请求,果你想让Apache使用最少的Socket连接来同时处理IPv6和IPv4的请求,需要使用--enabel-v4-mapped 的配置参数。

Apache在构建时--enabel-v4-mapped在所有的平台上默认是on,除了FreeBSD,NetBSD和OpenBSD之外。如果你只想让Apache处理IPv4的连接,不用管APR是否支持你合用的平台,直接在Listen指令后设置IP地址就可以了,例如:

Listen:0.0.0.0:80

Listen 192.170.2.1:80

如果你使用的平台支持APR并且你想让Apache通过各自的Socket处理IPv4和IPv6连接(如:禁用IPv4-mapped address),设置 --disabel-v4-mapetv4-mapped 在FreeBSD、NetBSD和OpenBSD上默认的设置是on

三、在需拟主机里面如何使用绑定

Listen指令没有实现对需拟主机的支持,它只能告诉Apache服务器监听哪一个IP地址和端口,如果没有使用<VitrualHost>指令,那么服务器将使用相同的动作接受Listen指令设置的IP和端口上的请求。然而,<VirtualHost>指令能够指定对于一个或多个IP或者端口上的请求做出特定的动作。为了实现一个需拟主机,首先要告诉服务器监听的所有IP和端口,然后使用<VirtualHost>片断来设置该需拟主机对其中特定的地端口上的请求做出响应。注意:如果<VirtualHost>中设置了没有通过Listen指定的IP地址和端口,那么Apache是不会接受该请求的。

 

第二篇:端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

端口与IP地址绑定

相关推荐