Listen 指令
说明 服务器监听的IP地址和端口
语法 Listen [IP-address:]portnumber [protocol]
作用域 server config
状态 MPM
模块 beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker, event
兼容性 Apache2.0以后必须设置该指令,protocol参数仅在2.1.5及以后版本中可用

Listen指令指示Apache只在指定的IP地址和端口上监听;默认情况下Apache会在所有IP地址上监听。Listen是一个必须设置的指令。如果在配置文件中找不到这个指令,服务器将无法启动。这和先前的版本不一样。

Listen指令指定服务器在那个端口或地址和端口的组合上监听接入请求。如果只指定一个端口,服务器将在所有地址上监听该端口。如果指定了地址和端口的组合,服务器将在指定地址的指定端口上监听。

使用多个Listen指令可以指定多个不同的监听端口和/或地址端口组合。服务器将会对列出的所有端口和地址端口组合上的请求作出应答。

例如,想要服务器接受80和8000端口上的请求,可以这样设置:

Listen 80
Listen 8000

为了让服务器在两个确定的地址端口组合上接受请求,可以这样设置:

Listen 192.170.2.1:80
Listen 192.170.2.5:8000

IPv6地址必须像下面的例子一样,用方括号括起来:

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

可选的protocol参数在大多数情况下并不需要。若未指定该参数,则将为443端口使用默认的https协议,为其它端口使用http协议。在这里指定协议是为了确定使用哪个模块来处理请求,以及根据AcceptFilter指令根据不同的协议有针对性的进行优化。

仅在使用非标准端口时才需要指定protocol参数。比如在8443端口运行https协议:

Listen 192.170.2.1:8443 https

错误条件
多个Listen指令指定了同一个地址和端口的组合后,会导致"Address already in use"错误。