Limitez Apache à une seule IP

13

J'ai un serveur avec un tas d'adresses IP, et je veux seulement qu'Apache écoute sur l'une d'entre elles. Cela ne semble pas être une chose difficile à faire, et je l'ai fait une fois auparavant, mais j'ai des problèmes cette fois-ci. Tout d'abord, voici où j'en suis maintenant, à ma connaissance:

Chaque endroit où Apache écoute le port 80, il écoute uniquement sur la bonne IP.

/etc/apache2$ grep -R ":80" .
./sites-available/default:<VirtualHost 192.168.0.82:80>
./httpd.conf:<VirtualHost 192.168.0.82:80>
./ports.conf:NameVirtualHost 192.168.0.82:80
./sites-enabled/000-default:<VirtualHost 192.168.0.82:80>

Il n'y a aucune mention d'écoute sur 0.0.0.0.

/etc/apache2$ grep -R "0\.0\.0\.0" .

Et pourtant ... Apache refuse de commencer.

/etc/apache2$ sudo /etc/init.d/apache2 start
 * Starting web server apache2
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
                                                                         [fail]

Au cas où quelqu'un demanderait, je ne suis pas lié à cette adresse:

/etc/apache2$ sudo netstat -nap | grep :80
tcp        0      0 192.168.0.83:80       0.0.0.0:*        LISTEN      2822/node

Le journal des erreurs sur /var/log/apache2/error.logindique simplement:

[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down

Ai-je raté une place dans la configuration d'Apache? Y a-t-il quelque chose dont je ne me souviens pas chercher? Pourquoi n'est-ce pas aussi simple que je m'en souvenais?

Dan
la source
1
Je ne suis pas offensé ou quoi que ce soit, mais pourriez-vous s'il vous plaît expliquer comment vous avez sélectionné la meilleure réponse à cette question? La réponse que vous avez sélectionnée faisait référence à une autre distribution, tandis que ma réponse était précise en ce qui concerne Ubuntu. Aurais-je pu rendre ma réponse différente de quelque façon que ce soit puisque vous ne l'avez pas sélectionnée?
pauska
Vos deux réponses contenaient la Listen 192.168.0.82:80ligne critique , ce dont j'avais besoin. J'ai choisi la réponse de cjc parce qu'elle expliquait un peu plus en détail pourquoi cette ligne était nécessaire. Je pensais que mentionner les commentaires utilisés dans la version d'Apache fournie avec CentOS était un bon ajout. Mais comme tout le monde semble être généralement d'accord pour dire que la réponse devrait aller à pauska, je suis allé de l'avant et je lui ai donné. Après tout, je remarque en examinant les révisions que le commentaire de pauska a considérablement influencé la réponse de cjc dans sa forme actuelle.
Dan

Réponses:

16

Regardez dans le /etc/apache2/ports.confdossier.

Vous trouverez une directive comme:

Listen 80

Le commentaire sur les boîtes CentOS décrit cette option:

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
#Listen 12.34.56.78:80

Pour ce que vous voulez, changez la Listen 80ligne en Listen 192.168.0.82:80.

Vous ne pouvez pas démarrer Apache pour le moment car il tente de se lier au port 80 sur toutes les interfaces (désignation 0.0.0.0), et vous avez nodeécouté sur 192.168.0.83:80.

L'adresse IP dans les blocs d'hôte virtuel signifie que cet hôte virtuel particulier répondra aux demandes provenant de cette adresse IP. Il ne spécifie pas comment Apache se liera aux interfaces qu'il voit.

cjc
la source
Le httpd.conf est vide sur Ubuntu, car ils utilisent un style différent de fichiers de configuration (beaucoup d'inclusions). Il n'y a pas non plus de "Listen 80", comme l'ont montré les grep de l'OP.
pauska
1
Oh, c'est vrai. Ubuntu. Je vais mettre à jour. Le grepqu'il faisait était contre: 80, donc ça allait manquer de toute façon, comme par défaut Listen 80.
cjc
1
Ce commentaire de CentOS m'aurait vraiment aidé. Silly Ubuntu ...
Dan
2

La directive Listen est ce que vous recherchez:

Listen 192.168.0.82:80

Plus d'informations dans la documentation .

stderr
la source
0

Utilisez les éléments suivants selon les documents Apache :

Écouter 192.168.0.82:80

Dans certaines circonstances (pas toutes), on pourrait aller un peu plus loin et faire ceci:

Écoutez some_name_in_my_localhost: 80

De cette façon, vous rendez vos configurations apache portables dans les situations où vous avez une batterie de serveurs Apache. Il y a des avantages et des inconvénients à cela (comme avec tout le reste.)

luis.espinal
la source