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.
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).
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.
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.
Une meilleure solution pour moi est de désactiver le pare-feu
service iptables stop
chkconfig iptables off
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.