O Apache não pode encontrar o host virtual se o domínio for o mesmo que o FQDN do servidor

1

Dentro do Apache, eu tinha um vhost configurado com ServerName host1.example.com

Dentro de / etc / hosts, há uma entrada para o host1

127.0.1.1 host1.example.com host1

E em / etc / hostname

host1

Esta é a maneira Debian / Ubuntu de criar um FQDN.

O Apache parece ter um problema ao servir conteúdo para um host virtual que possui o mesmo FQDN que o próprio servidor.

Ao executar nginx com um vhost para host1.example.com, não há problema em pegar o cabeçalho do host e usar o vhost correto.

Mas ao usar o Apache, ele tem problemas, ele sempre usa 000-default. A exclusão de 000-default faz com que ele mude para o próximo vhost e a exclusão de todos, exceto o arquivo vhost para o domínio que eu quero trabalhar, finalmente faz com que funcione.

NameVirtualHost está definido como *

Não há mensagens de erro nos logs, nenhum virtualhosts sobreposto e a configuração do vhost está perfeitamente bem.

<VirtualHost *>
        ServerAdmin webmaster@localhost
        ServerName host1.example.com

        DirectoryIndex index.php index.htm index.html
        DocumentRoot /var/www/host1.example.com

        <Directory />
            Options FollowSymLinks Includes -Indexes
            AllowOverride All
            Order allow,deny
            Allow from all
        </Directory>
</VirtualHost>

Alguém tem alguma ideia?

Editar:

saída apache -t -D DUMP_VHOSTS:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:*                    is a NameVirtualHost
         default server the.server.fqdn (/etc/apache2/sites-enabled/000-default:1)
         port * namevhost the.server.fqdn (/etc/apache2/sites-enabled/000-default:1)
         port * namevhost host1.example.com (/etc/apache2/sites-enabled/host1.example.com:1)
Syntax OK
    
por Kura 24.11.2010 / 17:02

2 respostas

2

Bem, parece que não há uma resposta real para isso, pode ser apenas uma coisa do Debian / Ubuntu baseada em como eles resolvem seu próprio FQDN.

Descobri que simplesmente comentar o host e a resolução do FQDN em / etc / hosts resolveu o problema.

#127.0.1.1 host1.example.com host1

No entanto, isso não é uma solução real, isso é necessário, caso contrário, você obterá erros ao tentar executar o sudo e outros programas, porque ele não resolve um nome de host.

A solução mais simples para mim foi adicionar uma única linha a 000-default:

ServerName localhost

Esta não é uma solução real como tal, mas significa que não irá corresponder a outros anfitriões e porque é o primeiro anfitrião que o Apache acha que irá resolver para este anfitrião se não for encontrada uma correspondência.

    
por 24.11.2010 / 20:17
0

Sempre que o Apache exibir o vhost errado, httpd -t -D DUMP_VHOSTS geralmente é muito bom em apontar qual é o problema.

    
por 24.11.2010 / 17:09