Mam serwer z wieloma adresami IP i chcę, aby Apache nasłuchiwał tylko na jednym z nich. Nie wydaje się to trudne, i zrobiłem to już jakiś czas temu, ale tym razem mam problemy. Po pierwsze, oto, gdzie jestem teraz, według mojego zrozumienia:
Każde miejsce, w którym Apache nasłuchuje na porcie 80, nasłuchuje tylko na poprawnym adresie 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>
Nie ma wzmianki o słuchaniu w 0.0.0.0.
/etc/apache2$ grep -R "0\.0\.0\.0" .
A jednak ... Apache nie chce zacząć.
/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]
Na wypadek, gdyby ktoś zapytał, nie jestem związany z tym adresem:
/etc/apache2$ sudo netstat -nap | grep :80
tcp 0 0 192.168.0.83:80 0.0.0.0:* LISTEN 2822/node
Dziennik błędów w /var/log/apache2/error.log
po prostu mówi:
[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down
Czy przegapiłem miejsce w konfiguracji Apache? Czy jest coś, czego nie pamiętam szukać? Dlaczego to nie jest tak proste, jak sobie przypomniałem?
apache-2.2
ubuntu
Dan
źródło
źródło
Listen 192.168.0.82:80
linię krytyczną , której potrzebowałem. Wybrałem odpowiedź cjc, ponieważ zagłębiła się w to, dlaczego ta linia była potrzebna. Pomyślałem, że wspomnienie o komentarzach zastosowanych w wersji Apache dostarczanej z CentOS było miłym dodatkiem. Ale ponieważ wydaje się, że wszyscy zgadzają się, że odpowiedź powinna iść do Pauski, poszedłem naprzód i mu to przekazałem. W końcu zauważam, że w komentarzach Pauski komentarz w istotny sposób wpłynął na odpowiedź cjc w jego obecnej formie.Odpowiedzi:
Apache domyślnie wiąże się ze wszystkim, nawet jeśli określisz określone adresy IP, na których chcesz uruchomić NameVirtualHost.
Dodaj to w swoich ports.conf:
Odniesienie: http://httpd.apache.org/docs/2.2/bind.html
źródło
Zajrzyj do
/etc/apache2/ports.conf
pliku.Znajdziesz dyrektywę, taką jak:
Komentarz do pól CentOS opisuje tę opcję:
Jeśli chcesz, zmień
Listen 80
linię naListen 192.168.0.82:80
.Nie możesz teraz uruchomić Apache, ponieważ próbuje on połączyć się z portem 80 na wszystkich interfejsach (oznaczenie 0.0.0.0), a
node
nasłuchujesz na 192.168.0.83:80.Adres IP w blokach hosta wirtualnego oznacza, że ten konkretny host wirtualny będzie odpowiadał na żądania przychodzące na ten adres IP. Nie określa, w jaki sposób Apache będzie wiązał się z interfejsami, które widzi.
źródło
grep
Robił było przeciw: 80 więc to jechało rzeczy Niewykorzystana szansa tak, jak domyślnieListen 80
.Dyrektywa Słuchaj jest tym, czego szukasz:
Więcej informacji w dokumentacji .
źródło
Użyj następujących dokumentów Apache :
W niektórych okolicznościach (nie wszystkie) można pójść nieco dalej i zrobić to:
W ten sposób czynisz konfiguracje apache przenośnymi w sytuacjach, gdy masz farmę serwerów Apache. Są w tym plusy i minusy (tak jak w przypadku wszystkiego innego.)
źródło