Pregunta

Me encuentro con un pequeño problema al final del Guía de introducción para vagrant.Estoy trabajando en una caja base CentOS que tiene Apache2 ejecutándose (aprovisionamiento a través de Puppet).He configurado 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 interrumpió inesperadamente la conexión".

hice un vagrant reload y vi "[predeterminado] - web:80 => 4567 (adaptador 1)" en el desplazamiento, entonces, ¿por dónde debería empezar a solucionar este problema?Gracias.

¿Fue útil?

Solución

Haré de esta una respuesta real en lugar de solo más comentarios.

Lo primero:intentar curl 'http://localhost:80' desde dentro de la máquina virtual.Si eso no funciona, entonces definitivamente no es el reenvío de puertos.

Próximo:intentar curl -v 'http://localhost:4567/' desde su máquina host.Curl podría darte un mejor mensaje de error que Safari.

Verificaría que no haya firewalls configurados que restrinjan el acceso al puerto 80.La máquina virtual Vagrant (Ubuntu) predeterminada no viene con un firewall configurado, pero dijiste que estás usando otra cosa, por lo que podría valer la pena verificarlo.

Si no es así, intente incluir algo que no sea Apache en el puerto 80.Python viene con un servidor HTTP simple que puedes usar: ve a la carpeta con index.html y correr sudo python -m SimpleHTTPServer 80, luego intenta golpear eso con curl desde ambas cajas.Si eso funciona, entonces probablemente sea un problema de configuración de Apache.No tengo suficiente experiencia con Apache para ayudar si ese es el caso (uso nginx).

Otros consejos

Quería agregar una nota adicional de que a menudo esto es causado por el servidor dentro de la VM porque se vincula a 127.0.0.1, que es loopback.Querrá asegurarse de que el servidor esté vinculado a 0.0.0.0 para que todas las interfaces puedan acceder a él.

Algunos servidores de aplicaciones integrados, como los servidores de desarrollo de Django y algunos servidores Ruby, utilizan de forma predeterminada 127.0.0.1 de forma predeterminada, por lo que es algo a tener en cuenta.

Aparte de eso, lo que dijo Steve es cierto:Asegúrese de que funcione desde la máquina virtual y pruebe con otros servidores simples para intentar descubrir si se trata de un problema de configuración.

Tuve el mismo problema en CentOS 6.3 con NGINX y encontré que la respuesta estaba en iptables en el vagrant box.

Desde bash en vagrant box, sigue estos pasos:

Primera lista de reglas actuales de iptable

iptables -L -v

Luego elimine las reglas actuales:

iptables -F

Permitir conexiones SSH en el puerto tcp 22

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Establecer políticas predeterminadas para cadenas de ENTRADA, ADELANTE y SALIDA

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

Establecer acceso para localhost

iptables -A INPUT -i lo -j ACCEPT

Aceptar paquetes pertenecientes a conexiones establecidas y relacionadas.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Guardar ajustes

/sbin/service iptables save

Listar reglas modificadas

iptables -L -v

Curl localhost:[puerto#] o presiónelo en su navegador desde fuera de vagrant

Más información sobre las configuraciones de iptable de CentOS se encuentran aquí:

http://wiki.centos.org/HowTos/Network/IPTables

Buena suerte.

Una mejor solución para mí es desactivar el firewall.

service iptables stop
chkconfig iptables off

También quiero agregar otra nota como Mitchell.si mi caso lo reenvio al 6789 del 80

$ curl -v http://localhost:6789

y tengo

<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>

Luego, usé la dirección IP y recibió el mensaje html correcto.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top