Serveur Apache HTTP Version 2.0
Configuration des adresses et ports sur lesquels Apache écoute.
Modules Apparentés | Directives Apparentées |
---|---|
Au moment de son démarrage, Apache se lie à un port et à une adresse sur la machine et se met en attente de requêtes entrantes. Par défaut, toutes les adresses de la machine se retrouvent à l'écoute. Dans tous les cas, Apache accepte d'écouter sur un ou plusieurs ports spécifiques, ou sur une seule ou plusieurs adresses, ou encore une combinaison des deux. Il est fréquent d'utiliser ces possibilités avec les fonctionnalités de Serveurs Virtuels, qui permettent de faire répondre Apache de manière différente en fonction de l'adresse IP, du nom ou du port.
Le serveur utilise la directive
Listen
pour n'accepter que des requêtes provenant de ports spécifiques ou
d'une combinaison adresse IP + port passés en argument.
Dans le cas où seul un port est spécifié avec la directive
Listen
,
le serveur se met à l'écoute sur le port spécifié, sur toutes
les interfaces et adresses de la machine. Si une adresse IP est
précisée en plus du port, le serveur n'écoute que sur l'adresse
et le port spécifiés. Il est possible de configurer plusieurs
directives Listen
,
afin qu'Apache écoute sur plusieurs adresses
et ports. Dans ce cas, le serveur répondra aux requêtes faites
sur tous les adresses et ports énumérés.
Par exemple, pour que le serveur accepte les connexions à la fois sur les ports 80 et 8000, spécifiez :
Listen 80
Listen 8000
Pour qu'Apache accepte les connexions sur deux combinaisons adresses + ports, spécifiez :
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
Les adresses IPv6 sont acceptées, pourvu qu'elles soient entourées entre crochets de la façon suivante :
Listen [2001:db8::a00:20ff:fea7:ccea]:80
De plus en plus de plates-formes implémentent IPv6, et APR supporte IPv6 sur la plupart d'entre elles, si bien qu'Apache peut utiliser des sockets IPv6 et répondre aux requêtes envoyées en IPv6.
Une complication possible pour les administrateurs Apache est de
savoir si un socket IPv6 est capable de gérer les connexions IPv4
aussi bien qu'IPv6. Gérer les connexions IPv4 sur une socket IPv6
suppose l'utilisation d'adresses IPv6 mappées en IPv4, ce qui est
le cas sur la plupart des plates-formes, mais pas sur FreeBSD, NetBSD
et OpenBSD, en raison des politiques systèmes de ces plates-formes.
Même sur des systèmes où cette fonctionnalité n'est pas activée par
défaut, un paramètre de compilation pour configure
permet de changer ce comportement pour Apache.
Pour qu'Apache puisse gérer à la fois les connexions IPv4 et IPv6
avec un minimum de sockets, il faut permettre l'utilisation des adresses
IPv6 mappées en IPv4, ce qui est faisable en spécifiant l'option
de compilation --enable-v4-mapped
et en utilisant la
directive générique Listen
comme suit :
Listen 80
Si --enable-v4-mapped
a été spécifié à la compilation,
les directives Listen de la configuration par défaut sont de la forme
ci-dessus. --enable-v4-mapped
est l'option de compilation
par défaut sur toutes les plates-formes, sauf pour FreeBSD, NetBSD, et
OpenBSD, donc il est probable que votre Apache ait été compilé avec
cette option.
Pour qu'Apache ne gère que les connexions IPv4, en ignorant l'éventuel
support IPv6 de la plate-forme ou d'APR, une adresse IPv4 peut être
donnée dans toutes les directives
Listen
, comme dans les
exemples suivants :
Listen 0.0.0.0:80
Listen 192.170.2.1:80
Pour qu'Apache gère les connexions IPv4 et IPv6 sur des sockets
différents (i.e., pour ne pas accepter les adresses IPv6 mappées
en IPv4), spécifiez l'option de compilation
--disable-v4-mapped
et utilisez des directives
Listen spécifiques telles que :
Listen [::]:80
Listen 0.0.0.0:80
Si le paramètre --disable-v4-mapped
a été défini
au moment de la compilation, les directives Listen de la
configuration par défaut sont de la forme ci-dessus.
--disable-v4-mapped
est l'option de
compilation par défaut sous FreeBSD, NetBSD, et OpenBSD.
La directive Listen
n'implémente aucun Serveur Virtuel. Elle sert simplement à
indiquer au serveur principal sur quels adresses et ports écouter.
Dans le cas où aucune section
<VirtualHost>
n'est utilisée, le serveur répondra de la même manière pour toutes
les requêtes qu'il recevra.
Des sections
<VirtualHost>
peuvent être utilisées pour qu'Apache réagisse différemment selon que la
requête est destinée à telle adresse ou à tel port. Avant d'implémenter
un Serveur Virtuel au moyen de la directive VirtualHost, la directive
Listen doit être configurée pour que le serveur écoute sur l'adresse
ou le port utilisé. Ensuite, une section
<VirtualHost>
devrait être utilisée pour qu'Apache réagisse différemment selon
l'adresse ou le port.
À noter que si un Serveur Virtuel
<VirtualHost>
est configuré sur une adresse et un port sur lesquels le serveur
n'est pas à l'écoute, le Serveur Virtuel ne sera pas accessible.