Eu tenho alguns sites configurados como VirtualHosts usando o Apache que estão funcionando bem há algum tempo. Recentemente, alterei o nome do host do servidor para um dos nomes de domínio que estavam sendo veiculados e também o adicionei ao / etc / hosts apontando para o endereço IP externo do servidor.
Desde que fiz isso, acessar o domínio do meu laptop leva-me ao padrão do Apache "Funciona!" página. Se eu remover 000-default de / etc / apache2 / sites-enabled /, ele exibirá o site correto. Tentando acessar o site com o 'www'. O prefixo me leva ao site correto, independentemente de 000-default estar ou não ativado por sites.
Com base nisso, suponho que a configuração padrão esteja servindo a página padrão por causa de como configurei o nome do host ou / etc / hosts (ou ambos), mas não consigo descobrir como desabilitar isso enquanto deixando essas configurações como estão. Todas as sugestões são bem-vindas!
Editar - Minha configuração atual do VirtualHost se parece com isso:
<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 http://www.domain.com , mas o http://domain.com me leva ao padrão do Apache "Funciona!" página. Se eu desativar a configuração padrão 000, ela mostra a página correta. Isso só começou a acontecer depois que eu defini o nome do host do servidor como domain.com e adicionei uma linha em / etc / hosts apontando domain.com para o endereço IP externo do servidor. Eu gostaria de deixar as coisas assim, se possível.
Edit: Eu corri apache2ctl -S
desde que /usr/sbin/apache2 -S
me deu "apache2: nome de usuário inválido $ {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
fonte
Respostas:
Perdi essa pergunta no outro dia.
Quando você tiver um contêiner <VirtualHost> sem um componente ServerName, ele usará o nome do host padrão. Como 000-default provavelmente não possui um componente ServerName e é o primeiro a ser incluído em ordem alfabética, é por isso que responde ao hostname.com e não permite que o nome do host explicitamente declarado funcione.
fonte
ServerName example.com
na configuração padrão funciona muito bem, no entanto. Obrigado!Você tem uma diretiva NameVirtualHost *: 80 em algum lugar?
Tentar:
Isso mostrará como o apache está analisando o arquivo de configuração. Você tem configurações com IPs reais ou todas com *? Falta algum: 80? O Apache não gosta de misturá-los.
Você tem um ServerName domain.com ou ServerAlias domain.com por padrão?
fonte
Verifique ServerName e ServerAlias na diretiva VirtualHost:
Leia: http://httpd.apache.org/docs/2.2/mod/core.html#serveralias , http://httpd.apache.org/docs/2.2/vhosts/
fonte
Isso funcionou:
quando tive um erro de digitação, NÃO funcionou (a diretiva ServerName duas vezes):
Quando eu tive a diretiva ServerName duas vezes, ela continuou resolvendo para o primeiro site listado (não mostrado aqui).
espero que isso ajude alguém ...
fonte
Eu tive um problema semelhante e o corrigi definindo explicitamente um ServerName no arquivo httpd.conf principal, em vez de deixar o apache descobrir automaticamente que era. Eu assumo que o que o apache decidiu foi o mesmo que meu vhost (definido mais tarde), então o padrão "venceu", substituindo a configuração de vhost.
Acabei de definir o httpd.conf ServerName como um nome de host que a máquina possui, nunca servirei páginas da web.
fonte