Tengo un servidor con un montón de direcciones IP, y solo quiero que Apache escuche en una de ellas. No parece algo difícil de hacer, y lo he hecho una vez antes, pero esta vez tengo algunos problemas. En primer lugar, aquí es donde estoy ahora, según tengo entendido:
En todos los lugares donde Apache escucha el puerto 80, solo escucha en la IP correcta.
/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>
No hay mención de escuchar en 0.0.0.0.
/etc/apache2$ grep -R "0\.0\.0\.0" .
Y sin embargo ... Apache se niega a comenzar.
/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]
En caso de que alguien pregunte, no estoy obligado a esa dirección:
/etc/apache2$ sudo netstat -nap | grep :80
tcp 0 0 192.168.0.83:80 0.0.0.0:* LISTEN 2822/node
El registro de errores en /var/log/apache2/error.log
solo dice:
[Wed Aug 08 03:30:18 2012] [notice] caught SIGTERM, shutting down
¿Me he perdido un lugar en la configuración de Apache? ¿Hay algo que no recuerdo buscar? ¿Por qué esto no es tan simple como lo recordaba?
apache-2.2
ubuntu
Dan
fuente
fuente
Listen 192.168.0.82:80
línea crítica , que es lo que necesitaba. Seleccioné la respuesta de cjc porque fue un poco más profundo en cuanto a por qué se necesitaba esa línea. Pensé que mencionar los comentarios utilizados en la versión de Apache que viene con CentOS fue una buena adición. Pero dado que todo el mundo parece estar de acuerdo en general en que la respuesta debería ir a pauska, me adelanté y se la di. Después de todo, noto al mirar las revisiones que el comentario de Pauska influyó significativamente en la respuesta de CJC en su forma actual.Respuestas:
Apache se une a todo de manera predeterminada, incluso si especifica ciertas IP (s) para ejecutar NameVirtualHost.
Agregue esto en sus puertos.conf:
Referencia: http://httpd.apache.org/docs/2.2/bind.html
fuente
Mira en el
/etc/apache2/ports.conf
archivo.Encontrarás una directiva como:
El comentario en los cuadros de CentOS describe esta opción:
Para lo que quieras, cambia la
Listen 80
línea aListen 192.168.0.82:80
.No puede iniciar Apache en este momento porque está intentando vincularse al puerto 80 en todas las interfaces (la designación 0.0.0.0), y está
node
escuchando en 192.168.0.83:80.La IP en los bloques de host virtuales significa que ese host virtual en particular responderá a las solicitudes que lleguen a esa dirección IP. No especifica cómo Apache se unirá a las interfaces que ve.
fuente
grep
que estaba haciendo estaba en contra: 80, así que iba a extrañar las cosas de todos modos, como el valor predeterminado esListen 80
.Escucha la directiva es lo que estás buscando:
Más información en la documentación .
fuente
Use lo siguiente según los documentos de Apache :
En algunas circunstancias (no todas), uno podría ir un poco más allá y hacer esto:
De esa manera, puede hacer que sus configuraciones de Apache sean portátiles en situaciones en las que tiene una granja de servidores Apache. Hay pros y contras en esto (al igual que con todo lo demás).
fuente