O encaminhamento de porta do Vagrant não funciona [fechado]
-
12-11-2019 - |
Pergunta
Estou com um pequeno problema no final do Guia de primeiros passos para vagrant
.Estou trabalhando em uma caixa base do CentOS que tem o Apache2 em execução (provisionamento via Puppet).Eu configurei o encaminhamento de porta 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, elas falham.O erro relatado pelo Safari é ‘O Safari não consegue 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)" na rolagem, então por onde devo começar a solucionar isso?Obrigado.
Solução
Farei disso uma resposta real, em vez de apenas mais comentários.
Primeira coisa:tentar curl 'http://localhost:80'
de dentro da VM.Se isso não funcionar, definitivamente não é o encaminhamento de porta.
Próximo:tentar curl -v 'http://localhost:4567/'
da 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 que restrinjam o acesso à porta 80.O Vagrant VM padrão (Ubuntu) não vem com firewall configurado, mas você disse que está usando outra coisa, então pode valer a pena verificar.
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 corra sudo python -m SimpleHTTPServer 80
, e 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 Apache para ajudar se for esse o caso (eu uso nginx).
Outras dicas
Eu queria acrescentar uma observação adicional de que muitas vezes isso é causado pelo servidor dentro da VM porque ele se liga a 127.0.0.1
, que é loopback.Você vai querer ter certeza de que o servidor está vinculado a 0.0.0.0
para 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 como 127.0.0.1
por padrão, então isso é algo a ser observado.
Fora isso, o que Steve disse é verdade:Certifique-se de que funciona dentro da VM e tente outros servidores simples para tentar descobrir se é um problema de configuração.
Eu tive o mesmo problema no CentOS 6.3 com NGINX e descobri que a resposta estava no iptables na caixa vagrant.
Do bash na caixa vagrant, siga estas etapas:
Primeiro liste as regras atuais do iptable
iptables -L -v
Em seguida, libere as regras atuais:
iptables -F
Permitir conexões SSH na porta TCP 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Defina políticas padrão para cadeias INPUT, FORWARD e OUTPUT
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
Definir acesso para localhost
iptables -A INPUT -i lo -j ACCEPT
Aceitar pacotes pertencentes a conexões estabelecidas e relacionadas
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
Salvar configurações
/sbin/service iptables save
Listar regras modificadas
iptables -L -v
Curl localhost:[port#] ou acesse-o em seu navegador de fora do vagrant
Mais informações sobre as configurações do iptable do CentOS encontradas aqui:
http://wiki.centos.org/HowTos/Network/IPTables
Boa sorte.
Uma solução melhor para mim é desabilitar o firewall
service iptables stop
chkconfig iptables off
Quero acrescentar outra nota como Mitchell também.se for o meu caso eu encaminho para 6789 de 80
$ curl -v http://localhost:6789
E eu consegui
<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>
Então, usei o endereço IP e recebi a mensagem HTML correta.