Conexão recusada para o host virtual Apache 2.4 [duplicado]

10

Eu tenho o Apache 2.4 rodando no Mac OS X. apachectl configtest me dê: Sintaxe OK.

Eu tenho dois hosts virtuais configurados, um chamado localhost, um chamado test.dev.

<VirtualHost *:80>
    DocumentRoot "/Users/psychomachine/Development/_localhost"
    ServerName localhost
    ServerAlias www.localhost
    <Directory />
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/Users/psychomachine/Development/test"
    ServerName test.dev
    ServerAlias www.test.dev
    <Directory />
        Require all granted
    </Directory>
</VirtualHost>

localhost apenas funciona:

↪ curl -I -L localhost                                                                                                                                                              15:51:08
HTTP/1.1 200 OK
Date: Tue, 08 Dec 2015 14:51:17 GMT
Server: Apache/2.4.16 (Unix)
Last-Modified: Tue, 08 Dec 2015 08:52:04 GMT
ETag: "c-5265f1673f500"
Accept-Ranges: bytes
Content-Length: 12
Content-Type: text/html

enquanto o test.dev não:

↪ curl -I -L test.dev                                                                                                                                                               15:51:01
curl: (7) Failed to connect to test.dev port 80: Connection refused

Meu arquivo de hosts tem uma entrada para test.dev, e é por isso que posso executar ping no test.dev e ouvir de 127.0.0.1.

↪ ping test.dev                                                                                                                                                                     15:53:39
PING test.dev (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: icmp_seq=0 ttl=64 time=0.069 ms
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.096 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.111 ms
^C
--- test.dev ping statistics ---
3 packets transmitted, 3 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.069/0.092/0.111/0.017 ms

Passei horas observando isso, mas ainda não entendi como é possível executar ping no test.dev, mas ainda assim a conexão foi recusada. O Apache está escutando na porta 80, e eu não estou recebendo uma página de tipo de erro proibido. Não há nada nos logs do Apache para test.dev, porque a solicitação de test.dev nunca chega ao Apache.

Estou sentindo falta de um elemento crucial do quebra-cabeça - e espero que alguém possa me apontar na direção certa.

Muito obrigado antecipadamente.

Editar: Como eu disse, o Apache está ouvindo no 80:

sudo lsof -i ':80'                                                                                                                                                                16:54:46
COMMAND  PID   USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
httpd   2464   root    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2466 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2467 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2468 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2469 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)
httpd   2470 daemon    5u  IPv6 0x8883a2a43af0ca7f      0t0  TCP *:http (LISTEN)

Informações adicionais

scutil -r test.dev                                                    08:25:59
Reachable 

telnet test.dev                                                       08:26:17
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host

telnet test.dev 80                                                    08:26:43
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host

127.0.0.1 test.dev está em /etc/hosts e Listen *:80 está no conf do apache.

    
por Tench 08.12.2015 / 16:04

3 respostas

4

Apesar de o Apache estar escutando a porta 80, essa porta estava recusando a conexão. No final, isso é o que funcionou para mim:

Verifiquei se a porta 80 estava aberta para TCP em todas as interfaces, o que no OSX você faz adicionando

pass in proto tcp from any to any port 80

para /etc/pf.conf . Recarregar o pfctl não funcionou bem, mas foi uma reinicialização. Agora todos os meus hosts virtuais estão acessíveis. E o mundo está em ordem novamente.

    
por 12.12.2015 / 08:33
4

Verifique se você tem httpd.conf para ver se você tem o seguinte:

Listen 127.0.0.1:80

Você precisa substituí-lo por:

Listen *:80

Ao fazer isso, o Apache se ligará a todas as interfaces do computador, não apenas à interface loopback .

Não se esqueça de reiniciar o Apache depois de editar httpd.conf .

    
por 10.12.2015 / 17:28
1

Tente conectar o test.dev com outra porta disponível para comunicação http ou https. OU interrompa o PID anterior com a porta ': 80' e, em seguida, execute. Verifique o ID do processo com -

netstat -ltnp | grep ': 80'

kill -9

    
por 08.12.2015 / 16:35