Por que outros virtualhosts entram em vigor se eu acessar o url não configurado

1

Eu tenho um servidor raiz onde eu tenho o apache2 rodando com algumas configurações de virtualhost lidando com 2 dos meus domínios com alguns subdomínios.

Eu percebi que, se eu tentar acessar algum URL que está configurado no meu virtualhosts, eu recebo um dos meus virtualhosts configurados.

Por exemplo, eu tenho um cliente de webmail configurado em webmail.mydomain.com. Agora, se eu digitar algo como hello.mydomain.com, ele mostrará meu cliente de webmail. Não há absolutamente nada apontando para o meu cliente de webmail ou qualquer coisa relacionada a hello.mydomain.com. Por que isso está acontecendo?

    
por NovumCoder 02.02.2013 / 16:50

2 respostas

2

Para solicitações que vêm com nenhum cabeçalho Host: ou um que não corresponda ao ServerName ou ServerAlias de qualquer um dos VirtualHosts habilitados, o apache servirá a solicitação do primeiro vhost carregado.

Para contornar essa situação, crie um vhost "padrão" que seja carregado antes de todos os outros. A configuração desse vhost seria algo como:

<VirtualHost *:80>
        ServerAdmin webmaster@localhost

        Redirect 404 /
        ErrorDocument 404 "Site not found."
</VirtualHost>

Isso exibirá um erro 404 para quaisquer solicitações não correspondentes.

    
por 02.02.2013 / 17:04
1

Se nenhum ServerName corresponder ao domínio fornecido, simplesmente o primeiro vhost que foi lido ao disparar o apache será exibido. Não tenho conhecimento de nenhuma possibilidade de desativar esse comportamento. Uma solução alternativa é garantir que um vhost fictício seja lido antes de todos os outros blocos do VirtualHost.

    
por 02.02.2013 / 17:05