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?

27
demandé sur Mark 2013-08-10 04:04:58

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

75
répondu Mark 2017-05-23 12:02:45

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)

2
répondu GrvTyagi 2015-07-04 09:21:07

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
1
répondu Levon 2017-08-09 08:21:19