Limite Apache a una sola IP


13

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.logsolo 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?


1
No me ofende ni nada, pero ¿podría explicar cómo seleccionó la mejor respuesta a esta pregunta? La respuesta que seleccionó fue hacer referencia a otra distribución, mientras que mi respuesta fue acertada con respecto a Ubuntu. ¿Podría haber hecho mi respuesta diferente de alguna manera ya que no la seleccionaste?
pauska

Ambas respuestas contenían la Listen 192.168.0.82:80lí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.
Dan

Respuestas:



16

Mira en el /etc/apache2/ports.confarchivo.

Encontrarás una directiva como:

Listen 80

El comentario en los cuadros de CentOS describe esta opción:

#
# 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

Para lo que quieras, cambia la Listen 80línea a Listen 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á nodeescuchando 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.


El httpd.conf está en blanco en Ubuntu, ya que usan un estilo diferente de archivos de configuración (muchos incluye). Tampoco hay ningún "Listen 80", como lo mostraron los grep del OP.
pauska

1
Correcto. Ubuntu Voy a actualizar Lo grepque estaba haciendo estaba en contra: 80, así que iba a extrañar las cosas de todos modos, como el valor predeterminado es Listen 80.
cjc

1
Ese comentario de CentOS realmente me habría ayudado. Ubuntu tonto ...
Dan


0

Use lo siguiente según los documentos de Apache :

Escuchar 192.168.0.82:80

En algunas circunstancias (no todas), uno podría ir un poco más allá y hacer esto:

Escuche some_name_in_my_localhost: 80

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).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.