Limita o Apache a um único IP

11

Eu tenho um servidor com vários endereços IP e só quero que o Apache ouça um deles. Não parece uma coisa difícil de fazer, e já fiz isso há um tempo, mas estou tendo alguns problemas desta vez. Primeiro, aqui é onde estou agora, no meu entendimento:

Todo lugar em que o Apache está escutando a porta 80, está ouvindo apenas o IP correto.

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

Não há menção de ouvir em 0.0.0.0.

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

E ainda assim ... o Apache se recusa a começar.

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

Caso alguém pergunte, eu não estou vinculado a esse endereço:

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

O log de erros em /var/log/apache2/error.log diz apenas:

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

Eu perdi um lugar na configuração do Apache? Existe algo que não estou lembrando de procurar? Por que isso não é tão simples como eu me lembrava?

    
por Dan 08.08.2012 / 12:10

4 respostas

17

O Apache se conecta a tudo por padrão, mesmo se você especificar determinados IP's para executar o NameVirtualHost.

Adicione isto em seu ports.conf:

Listen 192.168.0.82:80

Referência: link

    
por 08.08.2012 / 12:15
16

Procure no arquivo /etc/apache2/ports.conf .

Você encontrará uma diretiva como:

Listen 80

O comentário nas caixas do CentOS descreve esta opção:

#
# 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 o que você deseja, altere a linha Listen 80 para Listen 192.168.0.82:80 .

Você não pode iniciar o Apache agora porque está tentando ligar-se à porta 80 em todas as interfaces (a designação 0.0.0.0) e você tem node ouvindo em 192.168.0.83:80.

O IP nos blocos do host virtual significa que esse host virtual específico responderá às solicitações recebidas nesse endereço IP. Ele não especifica como o Apache se ligará às interfaces que ele vê.

    
por 08.08.2012 / 12:15
2

Diretiva de escuta é o que você está procurando:

Listen 192.168.0.82:80

Mais informações na documentação .

    
por 08.08.2012 / 12:17
0

Use o seguinte de acordo com os documentos do Apache :

Listen 192.168.0.82:80

Em algumas circunstâncias (não todas), pode-se ir um pouco mais longe e fazer isso:

Listen some_name_in_my_localhost:80

Dessa forma, você torna suas configurações do apache portáveis em situações em que você tem um farm de servidores Apache. Existem prós e contras para isso (assim como com todo o resto).

    
por 08.08.2012 / 14:08