Estou tendo um pequeno problema no final do guia de primeiros passos paravagrant
. Estou trabalhando em um basebox CentOS que tem o Apache2 em execução (provisionamento via Puppet). Configurei o encaminhamento de portas para solicitações da web usando a seguinte linha em Vagrantfile
:
config.vm.forward_port "web", 80, 4567
Mas quando faço solicitações para essa porta, eles falham. O erro relatado pelo Safari é 'O Safari não pode abrir a página “ http: // localhost: 4567 / ” porque o servidor interrompeu inesperadamente a conexão.'
Eu fiz um vagrant reload
e vi "[padrão] - web: 80 => 4567 (adaptador 1)" no pergaminho, então por onde devo começar a solucionar isso? Obrigado.
curl -v 'http://localhost:4567/'
dizer? Às vezes, o Safari é muito bom em esconder mensagens de erro.curl 'http://localhost:80'
a própria VM funciona? Caso contrário, o problema não é o encaminhamento de porta.curl
de dentro da VM está funcionando.curl
do anfitrião me dá(52) Empty reply from server
.Respostas:
Vou fazer desta uma resposta real em vez de apenas mais comentários.
Primeira coisa: tente
curl 'http://localhost:80'
de dentro da VM. Se isso não funcionar, então definitivamente não é o encaminhamento de porta.Em seguida: experimente
curl -v 'http://localhost:4567/'
em sua máquina host. O Curl pode fornecer uma mensagem de erro melhor do que o Safari.Eu verificaria se não há firewalls configurados restringindo o acesso à porta 80. O Vagrant VM padrão (Ubuntu) não vem com um firewall configurado, mas você disse que está usando outra coisa, então pode valer a pena checar.
Se não for isso, tente fazer algo diferente do Apache listado na porta 80. Python vem com um servidor HTTP simples que você pode usar - vá para a pasta com
index.html
e executesudo python -m SimpleHTTPServer 80
, depois tente acertar com curl em ambas as caixas. Se funcionar, provavelmente é um problema de configuração do Apache. Não tenho experiência suficiente com o Apache para ajudar se for esse o caso (eu uso o nginx).fonte
iptables
. Eu verifiquei para ter certeza de que a política padrão eraACCEPT
para conexões de entrada, mas não prestei atenção à cadeia de regras personalizadas do RedHat, que tem umaREJECT
regra pega-tudo como a última regra na cadeia. tl; dr Eu tinha um firewall no caminho e simplesmente não percebi.service iptables stop
como root para descartar rapidamente um problema de firewall do Guest. Reative-o mais tarde, se necessário.iptables
estava restringindo quase tudo. Segui este guia de centos do iptable (solução na seção 3 Escrevendo um conjunto de regras simples ) e funcionouVagrantfile
e executei o comandovagrant reload
Eu queria acrescentar uma observação adicional que geralmente isso é causado pelo servidor dentro da VM porque ele se liga a
127.0.0.1
, que é o loopback. Você vai querer ter certeza de que o servidor está ligado para0.0.0.0
que todas as interfaces possam acessá-lo.Alguns servidores de aplicativos integrados, como os servidores de desenvolvimento do Django e alguns servidores Ruby, são padronizados
127.0.0.1
por padrão, então isso é algo a ser observado.Além disso, o que Steve disse é verdade: certifique-se de que funciona dentro da VM e tente alguns outros servidores simples para tentar descobrir se é um problema de configuração.
fonte
Tive o mesmo problema no CentOS 6.3 c / NGINX e encontrei a resposta no iptables da caixa do vagrant.
No bash on the vagrant box, siga estas etapas:
Primeira lista de regras de iptable atuais
Em seguida, libere as regras atuais:
Permitir conexões SSH na porta tcp 22
Definir políticas padrão para cadeias INPUT, FORWARD e OUTPUT
Definir acesso para localhost
Aceita pacotes pertencentes a conexões estabelecidas e relacionadas
Salvar configurações
Listar regras modificadas
Curl localhost: [port #] ou acesse-o em seu navegador de fora do vagrant
Mais informações sobre as configurações de iptable do CentOS podem ser encontradas aqui:
http://wiki.centos.org/HowTos/Network/IPTables
Boa sorte.
fonte
service iptables stop
iptables -F
sozinho fez isso para mimUma solução melhor para mim é desativar o firewall
fonte
Quero adicionar outra nota como Mitchell também. se meu caso eu encaminho para 6789 de 80
E eu tenho
Então, eu usei o endereço IP em vez disso, ele obteve a mensagem html correta.
fonte