Apache - ouça apenas em um domínio específico, não em IP

7

Como posso configurar o apache para recusar conexões diretamente ao endereço IP ( link ) em vez do nome do vhost < um link href="http://example.com"> ?

Minha configuração do VirtualHost:

ServerName example.com

<VirtualHost *:80>

        ServerName example.com

        DocumentRoot /var/www/           
        <Directory /var/www/>                    
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

</VirtualHost>
    
por Alex 22.03.2014 / 19:19

3 respostas

24

Você não pode recusar conexões, pois o nome do host (ou IP) que o usuário está tentando usar como seu host HTTP não é conhecido pelo servidor até que o cliente realmente envie uma solicitação HTTP. O ouvinte TCP está sempre ligado ao endereço IP.

Uma resposta de erro HTTP seria aceitável?

<VirtualHost *:80>
    ServerName catchall
    <Location />
        Order allow,deny
        Deny from all
    </Location>
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/
    <Directory /var/www/>
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
</VirtualHost>
    
por 22.03.2014 / 19:23
0

Você tem que ir para a camada inferior, só vem à minha mente na cadeia de firewall com uma verificação de validação para o REQUEST HOST & o que você tem com o Apache, isso permitirá que o pacote seja ignorado ou descartado

    
por 21.06.2015 / 00:30
0

Uma maneira limpa de lidar com isso é com um RewriteRule da seguinte forma

<If "%{HTTP_HOST} == 'x.x.x.x'">
  RewriteRule ^.*$ http://www.example.com/$1 [L]
</If>
    
por 12.05.2017 / 17:57