Réinitialisation de la connexion lors de la redirection du port avec Vagrant
j'ai Vagrant/VirtualBox de l'exécution d'une Ubuntu 12.04 LTS OS. J'ai configuré Vagrant pour envoyer le port invité 8000 à mon port hôte 8888.
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 8000 => 8888 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
quand la machine virtuelle démarre, je démarre un serveur Django dev sur le port 8000.
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
OK super, je peux le mettre en arrière-plan et je peux même curl localhost:8000
et obtenir une sortie du serveur
<div id="explanation">
<p>
You're seeing this message because you have <code>DEBUG = True</code> in your
Django settings file and you haven't configured any URLs. Get to work!
</p>
</div>
mais quand j'essaie de frapper le serveur depuis ma machine hôte avec un Firefox / Chrome / Telnet, Je reçois une réinitialisation de connexion / connexion perdue/ERR_CONNECTION_RESET etc.
J'ai d'abord pensé que c'était peut-être quelque chose d'iptables, mais il s'avère Qu'Ubuntu a par défaut allow everything. J'ai aussi désactivé le pare-feu sur mon ordinateur hôte. Comment puis-je obtenir vers le bas de cette?
3 réponses
j'ai eu de Django à l'écoute sur 127.0.0.1:8000 (par défaut)
comme expliqué dans la réponse de Mitchell ici: vagrant's port forwarding ne fonctionne pas j'aurais dû écouter sur 0.0.0.0. Voici une citation de sa réponse:
j'ai voulu ajouter une note supplémentaire que souvent cela est causé par le serveur à l'intérieur de la VM car il se lie à 127.0.0.1, qui est loopback. Vous aurez envie de vous assurer que le serveur est lié à 0.0.0.0, de sorte que toutes les interfaces peuvent y accéder.
si vous utilisez Django, vous voulez démarrer le serveur dev comme ceci: ./manage.py runserver 0.0.0.0:8000
1). Le projet doit être exécuté en tant que python manage.py runserver 0.0.0.0:8000
.
si ce n'est pas corriger votre problème alors
2). Ouvrez votre fichier Vagrant et ajoutez
config.vm.network "forwarded_port", guest: 8000, host: 8001
après
# config.vm.network "forwarded_port", guest: 80, host: 8080
ligne
Ce travail dans mon cas ;)
Note: cette information de port avant fourni lors de l'exécution vagrant up
....
==> default: Forwarding ports...
default: 8000 => 8001 (adapter 1)
default: 22 => 2222 (adapter 1)
une autre solution consiste à utiliser SSH tunneling avec vagrant.
Ouvrez un terminal et cd
dans le répertoire où se trouve votre Vagrantfile
.
Si votre vm est activé ( vagrant up
), exécutez la commande suivante.
# save vagrant ssh config to a file named `vagrant-ssh-config`
vagrant ssh-config > vagrant-ssh-config
envoie ensuite port 8000 à l'hôte.
ssh -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default
maintenant, ouvrez votre navigateur et cochez 127.0.0.1:8000
.
noter que le précédent la commande ouvrira également un shell sur le serveur ssh. Si vous voulez ouvrir un tunnel ssh sans shell sur le serveur ssh ajouter -N
ssh -N -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default