Limitare Apache a un singolo IP


13

Ho un server con un sacco di indirizzi IP e voglio che Apache ascolti solo uno di essi. Non sembra una cosa difficile da fare, e l'ho già fatto una volta, ma questa volta ho dei problemi. Prima di tutto, ecco dove sono ora, per la mia comprensione:

Ogni posto in cui Apache sta ascoltando la porta 80, sta ascoltando solo sull'IP corretto.

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

Non si parla dell'ascolto su 0.0.0.0.

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

Eppure ... Apache si rifiuta di iniziare.

/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]

Nel caso qualcuno lo chieda, non sono vincolato a quell'indirizzo:

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

Il registro degli errori su /var/log/apache2/error.logdice solo:

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

Ho perso un posto nella configurazione di Apache? C'è qualcosa che non ricordo di cercare? Perché non è così semplice come me lo ricordavo?


1
Non sono offeso o altro, ma potresti spiegare come hai selezionato la risposta migliore a questa domanda? La risposta che hai selezionato si riferiva a un'altra distro, mentre la mia risposta era precisa per quanto riguarda Ubuntu. Avrei potuto rendere la mia risposta diversa in qualche modo da quando non l'hai selezionata?
— pauska,

Entrambe le tue risposte contenevano la Listen 192.168.0.82:80linea critica , che è ciò di cui avevo bisogno. Ho scelto la risposta di cjc perché è andata un po 'più in profondità sul perché quella linea fosse necessaria. Ho pensato che menzionare i commenti usati nella versione di Apache fornita con CentOS fosse una bella aggiunta. Ma dato che tutti sembrano concordare sul fatto che la risposta dovrebbe andare a Pauska, sono andato avanti e gliel'ho dato. Dopotutto, noto osservando le revisioni che il commento di Pauska ha influenzato significativamente la risposta di CJC nella sua forma attuale.
— Dan,

Risposte:



16

Guarda nel /etc/apache2/ports.conffile.

Troverai una direttiva come:

Listen 80

Il commento sulle caselle CentOS descrive questa opzione:

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

Per quello che vuoi, cambia la Listen 80linea in Listen 192.168.0.82:80.

Non puoi avviare Apache in questo momento perché sta tentando di collegarsi alla porta 80 su tutte le interfacce (la designazione 0.0.0.0) e hai nodeascoltato 192.168.0.83:80.

L'IP nei blocchi host virtuali significa che quel particolare host virtuale risponderà alle richieste che arrivano su quell'indirizzo IP. Non specifica come Apache si legherà alle interfacce che vede.


Httpd.conf è vuoto su Ubuntu, poiché usano uno stile diverso di file di configurazione (molti include). Non c'è neanche "Listen 80", come ha mostrato il grep dell'OP.
— pauska,

1
Oh giusto. Ubuntu. Aggiornerò. Quello grepche stava facendo era contrario: 80 quindi avrebbe perso comunque le cose, come impostazione predefinita Listen 80.
— cjc

1
Quel commento di CentOS mi avrebbe davvero aiutato. Ubuntu sciocca ...
— Dan

2

Ascolta la direttiva è quello che stai cercando:

Listen 192.168.0.82:80

Maggiori informazioni nella documentazione .


0

Utilizzare quanto segue secondo i documenti Apache :

Ascolta 192.168.0.82:80

In alcune circostanze (non tutte), si potrebbe andare un po 'oltre e fare questo:

Ascolta some_name_in_my_localhost: 80

In questo modo rendi le tue configurazioni apache portatili in situazioni in cui hai una server farm Apache. Ci sono pro e contro a questo (proprio come con tutto il resto.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.