web-dev-qa-db-fra.com

La redirection de port de vagabond ne fonctionne pas

Je rencontre un petit problème à la fin de Guide de démarrage pour vagrant . Je travaille sur une basebox CentOS sur laquelle Apache2 est en cours d'exécution (approvisionnement via Puppet). J'ai configuré la redirection de port pour les demandes Web à l'aide de la ligne suivante dans Vagrantfile:

 config.vm.forward_port "web", 80, 4567

Mais lorsque je fais des demandes à ce port, elles échouent. L'erreur signalée par Safari est "Safari ne peut pas ouvrir la page“ http: // localhost: 4567 / "car le serveur a interrompu la connexion de manière inattendue."

J'ai fait un vagrant reload et j'ai vu "[défaut] - web: 80 => 4567 (adaptateur 1)" dans le parchemin, alors par où devrais-je commencer à résoudre ce problème? Merci.

106
Hank Gay

Je vais en faire une réponse réelle au lieu de simplement plus de commentaires.

Première chose: essayez curl 'http://localhost:80' depuis la machine virtuelle. Si cela ne fonctionne pas, alors ce n'est certainement pas la redirection de port.

Suivant: essayez curl -v 'http://localhost:4567/' à partir de votre ordinateur hôte. Curl pourrait vous donner un meilleur message d'erreur que Safari.

Je vérifierais qu'il n'y a pas de pare-feu configuré limitant l'accès au port 80. Le vagabond par défaut VM (Ubuntu) n'est pas fourni avec un pare-feu, mais vous avez dit que vous utilisiez autre chose, donc ça vaut la peine de vérifier.

Si ce n'est pas le cas, essayez de créer quelque chose d'autre qu'Apache répertorié sur le port 80. Python est livré avec un serveur HTTP simple que vous pouvez utiliser - accédez au dossier avec index.html et courir Sudo python -m SimpleHTTPServer 80, puis essayez de frapper avec curl des deux cases. Si cela fonctionne, c'est probablement un problème de configuration Apache. Je n'ai pas assez d'expérience avec Apache pour vous aider si c'est le cas (j'utilise nginx).

78
Steve Losh

Je voulais ajouter une note supplémentaire selon laquelle cela est souvent causé par le serveur situé dans le VM car il est lié à 127.0.0.1, qui est en boucle. Vous voulez vous assurer que le serveur est lié à 0.0.0.0 afin que toutes les interfaces puissent y accéder.

Certains serveurs d'applications intégrés, tels que les serveurs de développement de Django et certains Ruby par défaut, 127.0.0.1 _ par défaut, c’est donc quelque chose à surveiller.

En dehors de cela, ce que Steve a dit reste vrai: assurez-vous que cela fonctionne à partir de VM) et essayez quelques autres serveurs simples pour essayer de déterminer s'il s'agit d'un problème de configuration.

257
Mitchell

J'ai eu le même problème sur CentOS 6.3 avec NGINX et j'ai trouvé la réponse: être dans les iptables de la boîte de vagant.

À partir de bash sur la boîte de vagabond, suivez ces étapes:

Première liste des règles iptables actuelles

iptables -L -v

Puis effacez les règles actuelles:

iptables -F

Autoriser les connexions SSH sur le port TCP 22

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

Définir des stratégies par défaut pour les chaînes INPUT, FORWARD et OUTPUT

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

Définir l'accès pour localhost

iptables -A INPUT -i lo -j ACCEPT

Accepter les paquets appartenant aux connexions établies et connexes

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

Enregistrer les paramètres

/sbin/service iptables save

Liste des règles modifiées

iptables -L -v

Curl localhost: [port #] ou cliquez dessus dans votre navigateur de l'extérieur du vagabond

Plus d'informations sur les configurations iptables CentOS trouvées ici:

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

Bonne chance.

32
travyo

Une meilleure solution pour moi est de désactiver le pare-feu

service iptables stop
chkconfig iptables off
27
edwinallenz

Je veux ajouter une autre note comme Mitchell. si mon cas je le transmets à 6789 de 80

$ curl -v http://localhost:6789

Et j'ai eu

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

Ensuite, j'ai utilisé l'adresse IP à la place, il a reçu le bon message HTML.

0
Larry Cai