Apache VHOST: host vs. IP

1

Eu tenho a seguinte configuração do Apache:

ServerName mydomain.com

<VirtualHost 1.2.3.4:80>     # contains my IP
    NameVirtualHost 1.2.3.4   # contains my IP
    ServerName mydomain.com
</VirtualHost>

Minha suposição é que somente solicitações para mydomain.com devem ir para esse VirtualHost. Infelizmente, mesmo solicitações para o endereço IP (1.2.3.4 no código acima) são tratadas pelo VHOST.

1) Qual é o procedimento correto para distinguir entre IP e Host?

2) Qual é a abordagem correta para apontar solicitações para o IP, ou seja, para um 403 (ou seja, com um VHOST separado)?

Muito obrigado!

    
por MrG 08.10.2010 / 13:28

2 respostas

1

Eu não acho que há uma maneira de evitar isso, mexendo com vfs defs. Você sempre terá um vhost padrão.

No entanto, você pode realizá-lo com o mod_rewrite. Algo como

RewriteEngine on
RewriteCond %{HTTP_HOST}   !^mydomain.com [NC]
RewriteRule ^/(.*) /$1 [F]

retornará 403 (F = proibido) quando o servidor for atingido por IP, a menos que alguém esteja sendo esperto (ou seja, inserindo um cabeçalho Host: http enquanto ainda estiver usando o IP; navegadores normais não o fazem)

Você também pode tentar redirecionar para mydomain.com em vez de proibir:

RewriteEngine on
RewriteCond %{HTTP_HOST}   !^mydomain.com [NC]
RewriteRule ^/(.*)  http://mydomain.com/$1 [R=301]
    
por 08.10.2010 / 23:01
0

O primeiro VirtualHost é o padrão, por isso também recebe seus pedidos de IP.
Eu faria isso:

NameVirtualHost *:80

<VirtualHost 1.2.3.4:80>  
    ServerName ip.mydomain.com   
    # first VH is default!
</VirtualHost>

<VirtualHost 1.2.3.4:80>
    ServerName mydomain.com
</VirtualHost>
    
por 08.10.2010 / 13:42