Priyanshu Goyal
Priyanshu Goyal

Reputation: 342

ERR_CONNECTION_RESET while using localhost

I am new to backend development. I am working on creating a basic webserver using vagrant and virtualbox. Agter running the server from the VM, when I try to reach it from the host machine, I get the above error.

Following is the vagrant configuration:

Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty32"
  config.vm.network "forwarded_port", guest: 80, host: 8080
end

Following is the main() code in the server file:

def main():
    try:
        port = 8080
        server = HTTPServer(('', port), webserverHandler)
        print "Web server running on port %s" % port
        server.serve_forever()  

    except KeyboardInterrupt:
        print "^C entered. Shutting down the server..."
        server.socket.close()   

After reading a lot about it, I tried some ways to make it work but to no avail. Also telnet localhost 8080 on the host machine gives:

Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

Running vagrant up shows that it is forwarding port from 80(guest) to 8080(host). But running sudo netstat -ntlp | grep LISTEN on the VM gives:

tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      491/rpcbind     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      685/sshd        
tcp        0      0 0.0.0.0:52166           0.0.0.0:*               LISTEN      649/rpc.statd   
tcp6       0      0 :::57101                :::*                    LISTEN      649/rpc.statd   
tcp6       0      0 :::111                  :::*                    LISTEN      491/rpcbind     
tcp6       0      0 :::22                   :::*                    LISTEN      685/sshd 

Running curl -v 'http://localhost:8080' gives:

*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET / HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.47.0
> Accept: */*
> 
* Recv failure: Connection reset by peer
* Closing connection 0
curl: (56) Recv failure: Connection reset by peer

Running curl 'http://localhost:80' on the VM gives:

curl: (7) couldn't connect to host

This is output when I run vagrant up:

==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
==> default: Forwarding ports...
    default: 80 (guest) => 8080 (host) (adapter 1)
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
    default: The guest additions on this VM do not match the installed version of
    default: VirtualBox! In most cases this is fine, but in rare cases it can
    default: prevent things such as shared folders from working properly. If you see
    default: shared folder errors, please make sure the guest additions within the
    default: virtual machine match the version of VirtualBox you have installed on
    default: your host and reload your VM.
    default: 
    default: Guest Additions Version: 4.2.0
    default: VirtualBox Version: 5.0
==> default: Mounting shared folders...
    default: /vagrant => /home/priyanshu/fullstack
==> default: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> default: flag to force provisioning. Provisioners marked to run always will still run

I am completely new to this. Let me know what am I doing wrong here.

Upvotes: 0

Views: 3351

Answers (1)

Frederic Henri
Frederic Henri

Reputation: 53713

Your python server is running on port 8080 and nothing is running port 80 (as the output of the netstat command shows)

In your case you need to change the guest port to the one from your python server

config.vm.network "forwarded_port", guest: 8080, host: 8080

Upvotes: 1

Related Questions