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
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