vhost padrão do Apache2 em ordem alfabética ou sobrescrever com _default_ vhost?

2

Eu tenho vários vhosts nomeados em um servidor web Apache (CentOS 5, Apache 2.2.3).
Cada vhost tem seu próprio arquivo de configuração em /etc/httpd/vhosts.d e esses arquivos de configuração vhost são incluídos no httpd conf principal com ... Include vhosts.d/*.conf

Aqui está um exemplo de um dos vhost confs ...

NameVirtualHost *:80
<VirtualHost *:80>
        ServerName www.domain.biz
        ServerAlias domain.biz www.domain.biz
        DocumentRoot /var/www/www.domain.biz
        <Directory /var/www/www.domain.biz>
                Options +FollowSymLinks
                Order Allow,Deny
                Allow from all
        </Directory>
        CustomLog /var/log/httpd/www.domain.biz_access.log combined
        ErrorLog /var/log/httpd/www.domain.biz_error.log
</VirtualHost>

Agora, quando alguém tenta acessar o servidor diretamente usando o endereço IP público, ele obtém o primeiro vhost especificado na configuração agregada (portanto, no meu caso, é ordem alfabética do diretório vhosts.d ). Qualquer um que acesse o servidor diretamente pelo endereço IP, eu gostaria que eles pegassem um 403 ou um 404.

Eu descobri várias maneiras de definir um vhost padrão / pega-tudo e algumas opiniões conflitantes.

  • Eu poderia criar um novo vhost conf em vhosts.d chamado 000aaadefault.conf ou algo assim, mas isso parece um pouco desagradável.

  • Eu poderia ter um bloco <VirtualHost> no meu% principal httpd.conf antes de incluir o diretório vhosts.d .

  • Eu poderia especificar apenas um DocumentRoot no meu principal httpd.conf

Que tal especificar um vhost padrão no httpd.conf com _default_ link
Ter o bloco <VirtualHost _default_:*> no meu httpd.conf antes de eu Include vhosts.d/*.conf ser o melhor caminho para um pega-tudo?

    
por batfastad 14.12.2012 / 16:12

2 respostas

2

A configuração de <VirtualHost _default_:*> não fará nada, não terá precedência sobre os hosts virtuais configurados como <VirtualHost *:80> (exceto em portas diferentes de 80).

_default_ só deve ser usado com hospedagem virtual baseada em IP. A partir da documentação :

A default vhost never serves a request that was sent to an address/port that is used for name-based vhosts.

Se parecer sujo abusar da alfabetização para definir o padrão, talvez coloque seu vhost baseado em nome padrão no seu principal httpd.conf , antes da linha Include ?

    
por 15.12.2012 / 09:03
2

I could create a new vhost conf in vhosts.d called 000aaadefault.conf or something but that feels a bit nasty.

Esta é realmente a melhor maneira de fazer isso, no entanto. Você quer ser consistente com sua configuração, portanto, não coloque um bloco <VirtualHost> no httpd.conf e o restante em arquivos separados. Nomeie o arquivo de configuração para o vhost !default.conf padrão e, em seguida, certifique-se de que não haja outros arquivos conf em vhosts.d com nomes que começam com pontuação.

    
por 14.12.2012 / 20:32