I'm running werkzeug (as part of a Tilestache setup) inside a Vagrant VM, running ubuntu 'precise.'
In my Vagrantfile, I have:
config.vm.network :forwarded_port, guest: 8080, host: 8080
When I start the server in the VM, I see:
* Running on http://127.0.0.1:8080/
If I curl
that address from within the VM, I get the expected result. When I curl
it from the host machine, I get:
curl: (52) Empty reply from server
And Chrome says "No data received."
Troubleshooting info:
- The server responds to pings from the host machine
- a port sniffer verifies that the port is open
- running
netstat -ntlp | grep 8080
in the vm shows that the server is listening on 8080 - My local hostsfile doesn't have any weird conflicts
- I'm also forwarding 22 => 2222, and I can ssh in with no trouble
- I've disabled the firewall on the host, and i don't believe there's one on the guest (iptables and ufw are disabled, at least)
- I've set
auto_correct: true
in case there are conflicts (there aren't)
I know I could set up a private network, but I'd like to understand why this isn't working and how to troubleshoot it.
Any other ideas?
When running a server from within a VM, start the server on 0.0.0.0 instead of 127.0.0.1.
127.0.0.1 is only accessible to the local machine, which for a VM means nothing outside of the VM can reach it! 0.0.0.0 is accessible from anywhere on the local network, which to a VM includes the host machine.
The answer came from here: Connection Reset when port forwarding with Vagrant
(Which apparently got its answer from here: https://stackoverflow.com/a/5999945/738675)
With help from: https://serverfault.com/questions/78048/whats-the-difference-between-ip-address-0-0-0-0-and-127-0-0-1
Google-bait:
Here are the errors you might receive if this is the problem:
- Chrome: "No data received"
- Firefox: "The connection was reset - The connection to the server was reset while the page was loading."
- Safari: "Safari can’t open the page [URL] because the server unexpectedly dropped the connection"
- curl: "Empty reply from server"
In the /etc/hosts
change line
127.0.0.1 localhost -> 0.0.0.0 localhost
and then restart server
This can also be a problem with your firewall on the vagrant machine. If you can curl the address while on the vagrant box, then check your firewalld settings or turn it off:
on CENTOS:
sudo service firewalld stop