107 votes

Vagrant est de la redirection de port ne fonctionne pas

Je suis confronté à un petit problème à la fin du guide de démarrage, vagrant. Je suis en train de travailler sur un CentOS basebox qui a Apache2 en cours d'exécution (approvisionnement via la Marionnette). J'ai mis en place la redirection de port pour les requêtes web à l'aide de la ligne suivante en Vagrantfile:

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

Mais quand je fais des demandes à ce port, ils échouent. L'erreur signalée par Safari est " Safari ne peut pas ouvrir la page "http://localhost:4567/" parce que le serveur de façon inattendue a chuté de la connexion.'

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

260voto

Mitchell Points 6646

Je voulais ajouter une note supplémentaire qui, souvent, cela est causé par le serveur au sein de la machine virtuelle, car il se lie d' 127.0.0.1, qui est de bouclage. Vous aurez envie de vous assurer que le serveur est lié à l' 0.0.0.0 , de sorte que toutes les interfaces d'accès.

Certains d'application intégrés des serveurs tels que Django serveurs de développement et Ruby serveurs par défaut 127.0.0.1 par défaut donc c'est quelque chose à regarder dehors pour.

Autre que cela, ce que Steve a dit est vrai: assurez-vous qu'il fonctionne de l'intérieur de la VM et essayer quelques autres de simples serveurs à essayer de comprendre si c'est un problème de configuration.

78voto

Steve Losh Points 11958

Je vais faire une réponse réelle au lieu d'un peu plus de commentaires.

Première chose: essayez curl 'http://localhost:80' à partir de l'intérieur de la VM. Si cela ne fonctionne pas, alors il n'est certainement pas la redirection de port.

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

J'aimerais vérifier qu'aucun pare-feu configurer la restriction de l'accès au port 80. La valeur par défaut Vagrant VM (Ubuntu) n'est pas fourni avec un pare-feu mis en place, mais vous avez dit que vous êtes en utilisant quelque chose d'autre, de sorte qu'il peut être la peine de vérifier.

Si ce n'est pas ça, essayez de faire autre chose que de Apache répertoriés sur le port 80. Python est fourni avec un simple serveur HTTP, vous pouvez utiliser l'option -- allez dans le dossier avec index.html et exécutez sudo python -m SimpleHTTPServer 80, alors essayez de frapper qu'avec curl à partir de deux cases. Si cela fonctionne, alors c'est probablement un problème de configuration d'Apache. Je n'ai pas assez d'expérience avec Apache pour aider si c'est le cas (j'utilise nginx).

32voto

travyo Points 365

J'ai eu le même problème sur CentOS 6.3 w/ NGINX et trouvé la réponse à être dans la iptables sur le vagrant box.

De bash sur le vagrant box, suivez ces étapes:

Première liste actuelle des règles iptable

iptables -L -v

Rincer les règles en vigueur:

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 INPUT, FORWARD et OUTPUT chaînes

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

Définir l'accès de localhost

iptables -A INPUT -i lo -j ACCEPT

Accepte les paquets appartenant à établir et à des connexions en relation

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 frapper votre navigateur à partir de l'extérieur de l'errance

Plus d'infos sur CentOS iptable configs trouvé ici:

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

Bonne chance.

27voto

edwinallenz Points 365

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

service iptables stop
chkconfig iptables off

0voto

Larry Cai Points 2243

Je veux ajouter une autre remarque comme Mitchell. si mon cas, j'ai hâte qu'il 6789 à partir 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 au lieu de cela, il a obtenu le bon message html.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X