Qual é a diferença entre *: 80 e _default_: 80 no Apache2?

8

Estou tentando entender a diferença entre os dois termos a seguir:

*:80
_default_:80

no arquivo de configuração do Apache. A documentação aqui não é clara para mim, e a única conversa na lista de discussão que eu pude encontrar aqui também não fornece nenhuma luz (compreensível para mim) sobre o assunto.

Eu tenho um monte de hosts virtuais baseados em nome declarados assim:

<VirtualHost *:80>
    ServerName example.com
    ...

e gostaria de ter uma entrada que seja acionada quando nenhuma dessas corresponder, ou seja, quando uma solicitação for recebida sem um nome de host virtual ou com um nome de host virtual que não tenha sido declarado. Devo usar *:80ou _default_:80?

Johannes Ernst
fonte
No apache, você pode ter um site em um único número de IP ou outro modelo, pode hospedar vários sites, cada um no mesmo número de IP e domínio diferente configurado como VirtualHost e escutando na mesma porta 80.
Andrew Smith

Respostas:

9

Eu acho que _default_é usado para definir um vhost padrão em uma configuração de host virtual baseada em IP. Você está usando hospedagem virtual baseada em nome; portanto, esta declaração na documentação

Um vhost padrão nunca atende a uma solicitação que foi enviada para um endereço / porta usado para vhosts baseados em nome.

torna-se relevante.

Em uma configuração de host virtual baseada em nome, o primeiro vhost definido é o vhost padrão e será exibido se nenhuma outra correspondência for encontrada, para que você possa fazer algo simples como

<VirtualHost *:80>
    ServerName default
    DocumentRoot /var/www/default
</VirtualHost>

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/example.com
</VirtualHost>

<VirtualHost *:80>
    ServerName sub.example.com
    DocumentRoot /var/www/sub.example.com
</VirtualHost>

Faria o que você deseja e serviria tudo, exceto example.com e sub.example.com, do padrão.

user9517
fonte