O Apache não está respeitando a diretiva ServerName para um site específico

8

Eu tenho alguns sites configurados como VirtualHosts usando o Apache que tem funcionado bem por um tempo. Recentemente, mudei o nome do host do servidor para um dos nomes de domínio que estava sendo servido e também o adicionei a / etc / hosts apontando para o endereço IP externo do servidor.

Desde que fiz isso, acessar o domínio do meu laptop me leva ao padrão do Apache "It works!" página. Se eu remover o 000-default de / etc / apache2 / sites-enabled /, ele exibirá o site correto. Tentando acessar o site com o 'www.' o prefixo leva-me ao site correto, independentemente de o 000-default estar ou não habilitado para sites.

Com base em tudo isso, estou supondo que a configuração padrão está servindo a página padrão por causa de como eu configurei o hostname ou / etc / hosts (ou ambos), mas não consigo descobrir como desabilite isso enquanto deixa essas configurações como estão. Qualquer sugestão bem vinda!

Editar - Minha configuração atual do VirtualHost é semelhante a:

<VirtualHost *:80>
    ServerName domain.com
    ServerAlias www.domain.com
    ServerAdmin [email protected]

    DocumentRoot /srv/www/domain

    ErrorLog /srv/www/domain/logs/error.log
    CustomLog /srv/www/domain/logs/access.log combined
</VirtualHost>

Para resumir: eu tenho vários VirtualHosts configurados, e este é o único que não está funcionando corretamente. Posso acessar o link bem, mas o link me leva O padrão do Apache "Funciona!" página. Se eu desabilitar a configuração padrão 000, mostrará a página correta. Isso só começou a acontecer depois que eu configurei o nome do host do servidor para domain.com e adicionei uma linha ao / etc / hosts apontando domain.com para o endereço IP externo do servidor. Eu gostaria de deixar as coisas assim, se possível.

Edit: Corri apache2ctl -S , porque /usr/sbin/apache2 -S me deu "apache2: nome de usuário incorreto $ {APACHE_RUN_USER}". Aqui está a saída:

VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80                   is a NameVirtualHost
         default server domain.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost domain.com (/etc/apache2/sites-enabled/000-default:1)
         port 80 namevhost other.com (/etc/apache2/sites-enabled/other:1)
         port 80 namevhost another.com (/etc/apache2/sites-enabled/another:1)
         port 80 namevhost domain.com (/etc/apache2/sites-enabled/domain:1)
Syntax OK
    
por John Debs 15.10.2010 / 06:41

5 respostas

10

Perdeu esta questão no outro dia.

Quando você tem um < VirtualHost > container sem um componente ServerName, ele usará o nome de host padrão. Como 000-default provavelmente não tem um componente ServerName, e é o primeiro a ser incluído alfabeticamente, é por isso que ele responde por hostname.com e não permite que seu host explicitamente declarado funcione.

    
por 19.10.2010 / 19:27
4

Você tem uma diretiva NameVirtualHost *: 80 em algum lugar?

Tente:

/usr/sbin/apache2 -S

Isso vai lhe dizer como o apache está analisando o arquivo de configuração. Você tem configurações que possuem IPs reais ou todos têm o *? Você tem alguma falta do: 80? O Apache não gosta de misturar esses.

Você tem um nome de servidor domain.com ou ServerAlias domain.com no padrão?

    
por 15.10.2010 / 07:02
1

Verifique o ServerName e o ServerAlias na diretiva do VirtualHost:

<VirtualHost *:80>
ServerName domain
ServerAlias www.domain.com
ServerAlias *.domain.com
</VirtualHost> 

Leia: link , link

    
por 15.10.2010 / 06:50
0

Isso funcionou:

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

quando eu tive um erro de digitação, ele não funcionou (a diretiva ServerName duas vezes):

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

Quando eu tinha a diretiva ServerName duas vezes, ela continuava resolvendo o primeiro site listado (não mostrado aqui).

espero que isso ajude alguém ...

    
por 16.01.2015 / 07:52
0

Eu tive um problema semelhante e consertei definindo explicitamente um ServerName no arquivo httpd.conf principal, em vez de deixar que o apache automaticamente descobrisse que era. Eu assumo que o que o apache decidiu foi o mesmo que o meu vhost (definido posteriormente), então o padrão "won", sobrescrevendo a configuração do vhost.

Acabei de definir o nome do servidor httpd.conf para um nome de host que a máquina possui, nunca servirei páginas da Web.

    
por 14.01.2016 / 04:03