Apache VirtualHost não está servindo uma página

5

Eu tenho um nome de domínio que está vinculado ao meu endereço IP em casa. No entanto, quero usar o mesmo servidor / ip para mostrar mais de um site.

Não consigo fazer com que os Hosts Virtuais funcionem.

Meu conf.d / virtual.conf é:

NameVirtualHost 192.168.10.151:80

Meus sites disponíveis / www.mydomain.com são:

Listen 80
<VirtualHost *>
        ServerAdmin     [email protected]
        ServerName      www.mydomain.com
        ServerAlias     mydomain.com

        #Indexes and Directory Root
        DirectoryIndex  index.html index.php
        DocumentRoot    /media/BigDisk/www/www.mydomain.com/

        # Log Files
        ErrorLog        /media/BigDisk/www/www.mydomain.com/logs/error.log
        CustomLog       /media/BigDisk/www/www.mydomain.com/logs/access.log combined
</VirtualHost>

E o site foi ativado usando a2ensite e o apache recarregado sem nenhum aviso ou erro, mas quando eu vou para www.mydomain.com eu não recebo nada ("Opps! Google Chrome não pôde conectar ...").

O que estou fazendo de errado?

Atualização: Reiniciar o Apache resulta nisso:

malfist@webhost:~$ sudo /etc/init.d/apache2 restart
[sudo] password for malfist:
 * Restarting web server apache2                                                                                                                       apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1 for ServerName
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost 192.168.10.151:80 has no VirtualHosts
[Thu Sep 01 12:16:22 2011] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
Action 'start' failed.
The Apache error log may have more information.
    
por Malfist 01.09.2011 / 05:15

3 respostas

4

Verificar resolução do nome

Primeiro, use nslookup ou dig ou host para verificar se www.mydomain.com aponta para o endereço IP externo estático do seu roteador.

Verificar configuração do roteador

Em seguida, verifique se o roteador tem o encaminhamento de porta configurado para que as solicitações que chegam à porta 80 na interface externa sejam encaminhadas para a porta 80 no endereço IP privado do servidor.

Verifique as restrições do ISP

Em seguida, verifique se os Termos e Condições do seu ISP permitem que você execute um serviço HTTP. Alguns ISPs bloqueiam conexões HTTP de entrada.

LAN! = Internet

Por fim, lembre-se de que, se você estiver testando isso de dentro de sua LAN, precisará de um endereço IP diferente para www.mydomain.com, poderá adicionar 192.168.10.151 www.mydomain.com ao seu arquivo de hosts (por exemplo, /etc/hosts ou C:\WINDOWS\system32\drivers\etc\hosts ) . Como Malfist apontou em um comentário: se o roteador suporta reflexão NAT, isso não é necessário.

Atualização:

Verifique os logs de erros do Apache (todos eles)

"Não foi possível conectar" sugere um problema básico de conectividade IP em vez de um problema de configuração do Apache vhost. É mais provável que o último resulte em uma resposta HTTP de 404 ou 500. Se a solicitação chegar ao Apache, você deverá ver uma entrada no log de erros. Se não houver entrada, é um bom indicador de que o Apache não está recebendo nenhuma solicitação.

Acompanhar avisos e erros relatados pelo Apache

NameVirtualHost *: 80 não tem VirtualHosts

Veja configurações incorretas

Multiple NameVirtualHost lines will yield a "NameVirtualHost *:80 has no VirtualHosts" warning. Apache will ignore the second directive and use the first defined NameVirtualHost line, though. This seems to happen when one is using multiple virtual host configuration files and doesn't understand that you only need to define a particular NameVirtualHost line once. As above, this can occur in the debian ports.conf file, especially after an upgrade.

Endereço já em uso: make_sock: não foi possível vincular ao endereço 0.0.0.0:80

Algum outro programa já está escutando na porta 80. Use netstat -anp para descobrir o que, então pare.

Ferramentas de diagnóstico

Sniffer Ethernet

Eu usaria um sniffer de rede (por exemplo, tcpdump ou wireshark) no servidor Apache para ver quais solicitações HTTP de entrada estão chegando - se nenhuma, então você sabe que é um problema de conectividade IP.

Atualização 2:

Wget

Outra boa ferramenta de diagnóstico é rodar isso no servidor

 wget --header="Host: www.mydomain.com" -O - http://localhost

Este é o tipo de saída que você deve ver

[root@mybox logs]# wget --header="Host: foo.bar" -O - http://localhost
--2011-09-01 18:56:08--  http://localhost/
Resolving localhost... 127.0.0.1
Connecting to localhost|127.0.0.1|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 125 [text/html]
Saving to: 'STDOUT'

 0% [                                       ] 0           --.-K/s              <html>
 <head>
  <title>mybox</title>
 </head>
 <body>
  <h1>mybox</h1>
  <p>Nothing to see, move along</p>
 </body>
</html>
100%[======================================>] 125         --.-K/s   in 0s

2011-09-01 18:56:08 (10.8 MB/s) - '-' saved [125/125]

[root@mybox logs]# tail -n 1 access_log
127.0.0.1 - - [01/Sep/2011:18:56:08 +0100] "GET / HTTP/1.0" 200 125 "-" "Wget/1.11.4 Red Hat modified"

Adicione a opção -S a wget para ver os cabeçalhos de resposta do servidor.

Se você receber algo como "conexão recusada", o Apache não está escutando na porta 80.

Netstat

A saída de netstat -anp deve incluir

tcp        0      0 :::80        :::*       LISTEN      12345/httpd
    
por 01.09.2011 / 11:44
1
NameVirtualHost  *:80

Isso está em /etc/apache2/ports.conf . Se você excluir ou comentar e reiniciar o Apache, o aviso desaparecerá.

    
por 30.03.2012 / 20:52
1

Passei horas nisto e tudo que eu precisava fazer era liberar o endereço ip ifconfig eth0 down. Tornou-se estático, agora reconhece meu nome de host virtual.

    
por 11.04.2012 / 20:25