在Vagrant guest虚拟机中运行的App Engine Go SDK Web服务器(具有端口转发)无法从主机访问

Mat*_*elf 5 google-app-engine go vagrant

我正在Vagrant guest precision64框中运行GAE dev服务器,具有以下网络设置(在我的Vagrantfile中):

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.network :forwarded_port, guest: 8080, host: 9090
end
Run Code Online (Sandbox Code Playgroud)

它的作用是什么:

[default] Forwarding ports...
[default] -- 8080 => 9090 (adapter 1)
Run Code Online (Sandbox Code Playgroud)

我使用以下命令启动App Engine服务器:

goapp serve
Run Code Online (Sandbox Code Playgroud)

要么

dev_appserver.py myappfolder
Run Code Online (Sandbox Code Playgroud)

这会按预期启动app engine dev服务器:

INFO 2013-11-22 dispatcher.py] Starting module running at: http://localhost:8080
Run Code Online (Sandbox Code Playgroud)

在所有情况下,我都能够成功进入Vagrant客户并卷曲localhost:8080.

不幸的是,从主机我无法在运行GAE开发Web服务器时从localhost:9090获得响应.另外,我已经确保我没有任何干扰主机上的端口9090.此外,我几乎肯定这与Vagrant无关,因为我在8080上启动了一个快速的node.js网络服务器,并且能够从主机到达它.我错过了什么?!!!

Mat*_*elf 8

在利用Vagrant端口转发时,您必须在0.0.0.0上运行Google App Engine Go开发Web服务器.像这样:

goapp serve -host=0.0.0.0
Run Code Online (Sandbox Code Playgroud)

有关确保guest虚拟机Web服务器未绑定到127.0.0.1(环回)的详细信息,请参阅此处的答案.默认情况下,应该重写绑定到127.0.0.1的Web服务器(如App Engine Go开发Web服务器),以使用0.0.0.0.

  • `goapp serve -host ::`是等价的,只是少打字 (2认同)