apache - network - El reenvío de puertos de Vagrant no funciona
vagrant provider (5)
Me encuentro con un pequeño problema al final de la guía Getting Started para vagrant
. Estoy trabajando en una basebox de CentOS que tiene Apache2 en ejecución (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 realizo solicitudes a ese puerto, fallan. El error informado por Safari es ''Safari no puede abrir la página " http://localhost:4567/ " porque el servidor inesperadamente eliminó la conexión''.
Hice una vagrant reload
y vi "[predeterminado] - web: 80 => 4567 (adaptador 1)" en el desplazamiento, entonces ¿dónde debería comenzar a solucionarlo? Gracias.
Haré de esto una respuesta real en lugar de solo más comentarios.
Lo 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: pruebe curl -v ''http://localhost:4567/''
desde su máquina host. Curl podría darle un mensaje de error mejor que Safari.
Verificaría que no hay firewalls configurados que restrinjan el acceso al puerto 80. La máquina virtual 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 eso no es así, intente hacer que aparezca algo más que 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 ejecute sudo python -m SimpleHTTPServer 80
, luego intente golpearlo con curl de 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).
Quería agregar una nota adicional que a menudo es causada por el servidor dentro de la VM porque se une a 127.0.0.1
, que es loopback. Deberá asegurarse de que el servidor está obligado 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 de Ruby, tienen el valor predeterminado de 127.0.0.1
por defecto, así que esto es algo que hay que tener en cuenta.
Aparte de eso, lo que Steve dice es cierto: asegúrese de que funcione desde dentro de la máquina virtual y pruebe con otros servidores simples para tratar de averiguar si se trata de un problema de configuración.
Quiero agregar otra nota como Mitchell también. si mi caso lo reenvío a 6789 desde 80
$ curl -v http://localhost:6789
Y tengo
<HTML>
<HEAD><TITLE>Redirection</TITLE></HEAD>
<BODY><H1>Redirect</H1></BODY>
Luego, utilicé la dirección IP en su lugar, obtuvo el mensaje html correcto.
Tuve el mismo problema en CentOS 6.3 w / NGINX y encontré la respuesta para estar en el iptables en el cuadro vagabundo.
Desde bash en el cuadro vagabundo, sigue estos pasos:
Primero enumera las reglas actuales de iptable
iptables -L -v
Luego limpie las reglas actuales:
iptables -F
Permitir conexiones SSH en el puerto tcp 22
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Establezca las políticas predeterminadas para las cadenas ENTRADA, DESPLAZAMIENTO 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 que pertenecen 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: [port #] o golpearlo en su navegador desde afuera vagabundo
Más información sobre las configuraciones de tabla de CentOS que se encuentran aquí:
http://wiki.centos.org/HowTos/Network/IPTables
Buena suerte.
Una mejor solución para mí es deshabilitar el firewall
service iptables stop
chkconfig iptables off