使用localhost时ERR_CONNECTION_RESET

时间:2017-05-31 07:54:28

标签: curl server vagrant localhost virtualbox

我是后端开发的新手。我正在使用vagrant和virtualbox创建一个基本的Web服务器。 Agter从VM运行服务器,当我尝试从主机到达它时,我收到上述错误。

以下是流浪汉配置:

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

以下是服务器文件中的main()代码:

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()   

在阅读了很多关于它的内容之后,我尝试了一些方法使其工作但无济于事。 主机上的telnet localhost 8080也会给出:

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

运行vagrant up表明它正在将端口从80(guest)转发到8080(host)。但是在VM上运行sudo netstat -ntlp | grep LISTEN会给出:

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 

正在运行curl -v 'http://localhost:8080'

*   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

在VM上运行curl 'http://localhost:80'给出:

curl: (7) couldn't connect to host

当我运行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

我对此完全陌生。让我知道我在这里做错了什么。

1 个答案:

答案 0 :(得分:1)

您的python服务器正在端口8080上运行,并且没有任何内容正在运行端口80(因为netstat命令的输出显示)

在您的情况下,您需要将访客端口更改为python服务器中的访客端口

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