Ich habe einen Server mit einer Reihe von IP-Adressen, und Apache soll nur eine davon abhören. Es hört sich nicht schwer an, und ich habe es vor einiger Zeit schon einmal gemacht, aber diesmal habe ich ein paar Probleme. Nach meinem Verständnis bin ich jetzt hier:
Jeder Ort, an dem Apache auf Port 80 lauscht, lauscht nur auf der richtigen 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>
Es wird nicht erwähnt, auf 0.0.0.0 zu hören.
/etc/apache2$ grep -R "0\.0\.0\.0" .
Und doch ... Apache weigert sich zu starten.
/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]
Falls jemand fragt, bin ich nicht an diese Adresse gebunden:
/etc/apache2$ sudo netstat -nap | grep :80
tcp 0 0 192.168.0.83:80 0.0.0.0:* LISTEN 2822/node
Das Fehlerprotokoll bei /var/log/apache2/error.log
sagt nur:
[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down
Habe ich einen Punkt in der Konfiguration von Apache verpasst? Gibt es etwas, woran ich mich nicht erinnern kann? Warum ist das nicht so einfach, wie ich es in Erinnerung hatte?
apache-2.2
ubuntu
Dan
quelle
quelle
Listen 192.168.0.82:80
Linie, die ich brauchte. Ich habe die Antwort von cjc gewählt, weil es ein bisschen tiefer ging, warum diese Zeile benötigt wurde. Ich fand es eine schöne Ergänzung, die Kommentare zu erwähnen, die in der mit CentOS gelieferten Apache-Version verwendet wurden. Aber da sich offenbar alle einig sind, dass die Antwort an pauska geht, habe ich sie ihm gegeben. Immerhin bemerke ich an den Überarbeitungen, dass der Kommentar von pauska die Antwort von cjc in seiner jetzigen Form maßgeblich beeinflusst hat.Antworten:
Apache ist standardmäßig an alles gebunden, auch wenn Sie bestimmte IP-Adressen angeben, auf denen NameVirtualHost ausgeführt werden soll.
Fügen Sie dies in Ihre ports.conf ein:
Referenz: http://httpd.apache.org/docs/2.2/bind.html
quelle
Schau in die
/etc/apache2/ports.conf
Datei.Sie finden eine Direktive wie:
Der Kommentar zu CentOS-Feldern beschreibt diese Option:
Ändern Sie für das, was Sie möchten, die
Listen 80
Zeile inListen 192.168.0.82:80
.Sie können Apache derzeit nicht starten, da versucht wird, auf allen Schnittstellen (mit der Bezeichnung 0.0.0.0) eine Bindung zu Port 80 herzustellen, und Sie haben
node
192.168.0.83:80 abgehört.Die IP in den virtuellen Host-Blöcken bedeutet, dass dieser bestimmte virtuelle Host auf Anforderungen reagiert, die über diese IP-Adresse eingehen. Es gibt nicht an, wie Apache an die angezeigten Schnittstellen gebunden wird.
quelle
grep
er tat, war gegen: 80, also würde es sowieso fehlen, wie der Standard istListen 80
.Die Listen-Direktive ist genau das, wonach Sie suchen:
Weitere Infos in der Dokumentation .
quelle
Verwenden Sie gemäß den Apache-Dokumenten Folgendes :
Unter bestimmten Umständen (nicht bei allen) könnte man noch etwas weiter gehen und dies tun:
Auf diese Weise können Sie Ihre Apache-Konfigurationen in Situationen portabel machen, in denen Sie über eine Apache-Serverfarm verfügen. Das hat Vor- und Nachteile (genau wie bei allem anderen).
quelle