Me encuentro con un pequeño problema al final de la guía de introducción paravagrant
. Estoy trabajando en una caja base CentOS que tiene Apache2 en ejecución (aprovisionamiento a través de Puppet). Configuré el reenvío de puertos para solicitudes web usando la siguiente línea en Vagrantfile
:
config.vm.forward_port "web", 80, 4567
Pero cuando hago solicitudes a ese puerto, fallan. El error informado por Safari es "Safari no puede abrir la página" http: // localhost: 4567 / "porque el servidor cortó la conexión inesperadamente."
Hice un vagrant reload
y vi "[predeterminado] - web: 80 => 4567 (adaptador 1)" en el desplazamiento, entonces, ¿por dónde debería comenzar a solucionar este problema? Gracias.
curl -v 'http://localhost:4567/'
dice? A veces, Safari es demasiado bueno para ocultar mensajes de error.curl 'http://localhost:80'
desde la propia máquina virtual? Si no es así, el problema no es el reenvío de puertos.curl
desde dentro de la VM está funcionando.curl
del anfitrión me da(52) Empty reply from server
.Respuestas:
Haré de esta una respuesta real en lugar de solo más comentarios.
Primero: intente
curl 'http://localhost:80'
desde dentro de la máquina virtual. Si eso no funciona, definitivamente no es el reenvío de puertos.Siguiente: intente
curl -v 'http://localhost:4567/'
desde su máquina host. Curl puede darle un mensaje de error mejor que Safari.Verificaría que no hay firewalls configurados que restrinjan el acceso al puerto 80. La VM Vagrant predeterminada (Ubuntu) no viene con una configuración de firewall, pero dijiste que estás usando otra cosa, por lo que podría valer la pena. verificar.
Si no es así, intente hacer que aparezca algo diferente a Apache en el puerto 80. Python se envía con un servidor HTTP simple que puede usar: vaya a la carpeta con
index.html
y ejecutesudo python -m SimpleHTTPServer 80
, luego intente presionar eso con curl en ambos cuadros. Si eso funciona, probablemente sea un problema de configuración de Apache. No tengo suficiente experiencia con Apache para ayudar si ese es el caso (uso nginx).fuente
iptables
. Verifiqué para asegurarme de que la política predeterminada fueraACCEPT
para conexiones entrantes, pero no presté atención a la cadena de reglas personalizadas de RedHat, que tiene unaREJECT
regla general como última regla de la cadena. tl; dr. Tenía un firewall en el camino y no me di cuenta.service iptables stop
como root para descartar rápidamente un problema de firewall invitado. Vuelva a habilitarlo más tarde si es necesario.iptables
estaba restringiendo casi todo. Seguí esta guía de iptable centos (solución en la sección 3 Escribiendo un conjunto de reglas simples ) y funcionó a laVagrantfile
y ejecuté el comandovagrant reload
Quería agregar una nota adicional de que a menudo esto es causado por el servidor dentro de la VM porque se une a
127.0.0.1
, que es un bucle invertido. Querrá asegurarse de que el servidor esté vinculado para0.0.0.0
que todas las interfaces puedan acceder a él.Algunos servidores de aplicaciones incorporados, como los servidores de desarrollo de Django y algunos servidores Ruby, están predeterminados
127.0.0.1
de forma predeterminada, por lo que esto es algo a tener en cuenta.Aparte de eso, lo que Steve dijo es cierto: asegúrese de que funcione desde la máquina virtual y pruebe con otros servidores simples para tratar de averiguar si se trata de un problema de configuración.
fuente
Tuve el mismo problema en CentOS 6.3 w / NGINX y encontré que la respuesta estaba en las iptables del cuadro vagabundo.
Desde bash on the vagrant box, sigue estos pasos:
Primero enumere las reglas actuales de iptable
Luego limpie las reglas actuales:
Permitir conexiones SSH en el puerto tcp 22
Establecer políticas predeterminadas para las cadenas INPUT, FORWARD y OUTPUT
Establecer acceso para localhost
Acepta paquetes pertenecientes a conexiones establecidas y relacionadas
Guardar ajustes
Lista de reglas modificadas
Curl localhost: [puerto #] o presione en su navegador desde fuera de vagrant
Más información sobre las configuraciones de iptable de CentOS aquí:
http://wiki.centos.org/HowTos/Network/IPTables
Buena suerte.
fuente
service iptables stop
iptables -F
solo lo hizo por míUna mejor solución para mí es deshabilitar el firewall.
fuente
También quiero agregar otra nota como Mitchell. si mi caso lo reenvío al 6789 de 80
Y tengo
Luego, usé la dirección IP en su lugar, obtuvo el mensaje html correcto.
fuente