J'exécute werkzeug (dans le cadre d'une configuration Tilestache) à l'intérieur d'une VM vagabonde, exécutant ubuntu 'precise'.
Dans mon Vagrantfile, j'ai:
config.vm.network :forwarded_port, guest: 8080, Host: 8080
Lorsque je démarre le serveur dans la VM, je vois:
* Running on http://127.0.0.1:8080/
Si je curl
cette adresse depuis la machine virtuelle, j'obtiens le résultat attendu. Quand je la change curl
de la machine hôte, je reçois:
curl: (52) Empty reply from server
Et Chrome dit "Aucune donnée reçue".
Informations de dépannage:
netstat -ntlp | grep 8080
dans la machine virtuelle indique que le serveur est à l'écoute sur 8080auto_correct: true
en cas de conflit (il n'y en a pas)Je sais que je pourrais configurer un réseau privé, mais j'aimerais comprendre pourquoi cela ne fonctionne pas et comment le résoudre.
D'autres idées?
Lorsque vous exécutez un serveur depuis une machine virtuelle, démarrez-le sur 0.0.0.0 au lieu de 127.0.0.1.
127.0.0.1 est uniquement accessible à la machine locale, ce qui pour un VM ne signifie rien en dehors de la VM ne peut l'atteindre! 0.0.0.0 est accessible de n’importe où sur le réseau local, ce qui, pour un VM, inclut la machine hôte.
La réponse est venue d'ici: Réinitialisation de la connexion lors de la redirection de port avec Vagrant
(Ce qui a apparemment obtenu sa réponse à partir d'ici: https://stackoverflow.com/a/5999945/738675 )
Avec l'aide de: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1
Voici les erreurs que vous pourriez recevoir si tel est le problème:
Dans la ligne /etc/hosts
change
127.0.0.1 localhost -> 0.0.0.0 localhost
et ensuite restart server
Cela peut également être un problème avec votre pare-feu sur la machine vagabonde. Si vous pouvez contrôler l'adresse lorsque vous êtes sur la case d'oubli, vérifiez les paramètres de votre pare-feu ou désactivez-le:
sur CENTOS:
Sudo service firewalld stop
Ensuite, vous devriez mettre à jour vos paramètres firewalld et le redémarrer;)