Estou tentando adicionar um segundo host virtual à minha configuração do apache, mas não consigo obter o novo host virtual a ser usado.
Meu httpd.conf
apenas contém a seguinte linha:
ServerName radiofreebrighton.org.uk
Eu também tenho um ports.conf
arquivo que contém o seguinte:
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Eu tenho dois arquivos nos sites-available
quais foram vinculados sites-enabled
por a2ensite
:
- radiofreebrighton.org.uk
- trafalgararches.co.uk
O conteúdo do primeiro é:
<VirtualHost _default_:80>
DocumentRoot /home/tom/www
ServerAdmin [email protected]
ServerName radiofreebrighton.org.uk
ServerAlias www.radiofreebrighton.org.uk
<Directory /home/tom/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
LogLevel error
CustomLog /var/log/apache2/access.log combined
Alias /wiki /home/tom/www/mediawiki/index.php
</VirtualHost>
O conteúdo deste último é:
<VirtualHost *:80>
DocumentRoot /home/tom/tata-www
ServerAdmin [email protected]
ServerName trafalgararches.co.uk
ServerAlias www.trafalgararches.co.uk
<Directory /home/tom/tata-www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
logLevel error
ErrorLog /var/log/apache2/error.log
</VirtualHost>
Mas sempre que solicito uma página de trafalgararches.co.uk, recebo uma página de radiofreebrighton.org.uk. Por que isso pode estar acontecendo? Como posso corrigir isso?
Editar:
Configuração do host virtual conforme entendido pelo apache:
tom@rfb:/usr/local$ apache2ctl -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:80 is a NameVirtualHost
default server radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost radiofreebrighton.org.uk (/etc/apache2/sites-enabled/radiofreebrighton.org.uk:1)
port 80 namevhost trafalgararches.co.uk (/etc/apache2/sites-enabled/trafalgararches.co.uk:1)
Syntax OK
(Coletado via apache2ctl -S
aka httpd -S
.)
apache-2.2
virtualhost
Tom Wright
fonte
fonte
ServerName
eServerAlias
. Além disso, verifique se você reiniciou o apache.NameVirtualHost *:80
algum lugar na sua configuração?Respostas:
Bem, essa pergunta tem mais de um ano, mas eu me deparei com um "problema" semelhante. Isso pode ser óbvio, mas não esqueça de reiniciar o serviço apache depois de ativar um host virtual adicional. Veja, após executar
a2ensite
para o segundo host virtual, a saída deapache2ctl -S
mostrará que os dois sites estão disponíveis (e um deles é o padrão), mesmo se você não recarregou o apache.Digamos que você tenha dois hosts virtuais - site1 e site2. Você executa
a2ensite site1
e recarrega o serviço apache. Agora você pode acessarhttp://site1
e é o padrão. Agora você correa2ensite site2
, mas esqueça de reiniciar o apache. A saída deapache2ctl -S
será:Mas quando você tenta carregar
http://site2
, ele realmente carrega o site padrão (site1), pois a configuração não está carregada.fonte
Eu tive um problema semelhante em que meus vhosts adicionais na porta 443 (SSL / HTTPS) estavam todos sendo direcionados para o diretório do primeiro vhost listado. O Apache estava basicamente ignorando a propriedade servername e correspondendo apenas na porta ip:.
Acontece que estava faltando o comando 'NameVirtualHost *: 443' para ativar a hospedagem virtual nomeada para a porta 443.
'NameVirtualHost *: 443' só precisa ser chamado uma vez e deve ser definido acima dos seus vhosts para a porta 443. Coloquei minha definição no arquivo ports.config para que se pareça com:
Não se esqueça de reiniciar o apache após quaisquer alterações.
fonte
NameVirtualHost
produz esta mensagem na inicialização:AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/ports.conf
Meus 2 centavos: como eu tenho que ficar com um IP (não quero que o site seja veiculado em todas as redes instaladas), aconteceu que após a alteração do IP privado local do servidor, esqueci de alterá-lo aqui:
NameVirtualHost 192.168.100.20:80 <VirtualHost 192.168.100.20:80>
É claro que não é um problema do Apache informar que o IP não existe localmente.
fonte
Tom, veja aqui http://httpd.apache.org/docs/2.0/en/mod/core.html#namevirtualhost
Portanto, tudo bem se você alterar o padrão para o endereço IP do seu servidor.
fonte
Acho a resposta aqui: http://alexking.org/blog/2007/11/01/apache-2-only-serves-first-virtual-host
Coloque 2 servername na mesma tag 1 VirtualHost como abaixo:
Acabei tendo problemas com o segundo site porque tinha dois blocos de tags do VirtualHost.
fonte
Eu tive esse problema ao migrar sites para um novo servidor Ubuntu 16. Depois de um pouco de esforço, percebi que o módulo SSL não estava ativado por padrão; portanto, qualquer coisa dentro dos
<IfModule mod_ssl.c>
blocos é ignorada silenciosamente.Anos atrás, envolvi todos os meus fantasmas SSL neste condicional e, desta vez, acabei de copiar os arquivos de configuração para o novo servidor.
Corrigi-o ativando o módulo:
fonte
Descobri que a origem desse problema era uma entrada / etc / hosts no meu servidor com a URL apontando para o IP externo do servidor.
Em um ponto, eu devo tê-lo configurado antes do DNS estar pronto, então digitei uma entrada / etc / hosts no meu servidor apontando para seu próprio IP externo:
Em seguida, configurei um ServerAlias para um site existente para "vhost.example.com"
Mas nada que eu pudesse fazer impediria o Apache de fornecer o site default-ssl.conf para solicitações de SSL para vhost.example.com. O HTTP da porta 80 funcionou bem, mas o SSL sempre mostrava o site padrão. No final, esse tópico do SO me levou a tentar o "apachectl -S", que mostra sites, e finalmente consegui descobrir.
Portanto, se você está obtendo o site SSL padrão em vez do site que você espera, certifique-se de não adicionar o endereço IP externo do seu servidor em uma entrada / etc / hosts! Uma coisa bem estranha de se fazer em retrospectiva, mas espero que isso ajude outra pessoa!
fonte