【问题标题】:Vagrant port forwarding on windows 10Windows 10 上的流浪端口转发
【发布时间】:2016-06-22 11:21:37
【问题描述】:

我在 vagrant 端口转发方面遇到以下问题:

我已经在我的 Windows 10 笔记本电脑上安装了 vagrant,带有“hashicorp/precise64”框,创建了 ssh 私钥以从 putty 登录并通过 SSH 使用设置成功登录:

IP 地址 127.0.0.1 2222端口

这让我觉得端口转发适用于 SSH。在 Vagrantfile 中,我配置了以下几行:

  config.vm.network "forwarded_port", guest: 80, host: 8181,
    auto_correct: true

在虚拟机上我安装了 pip,并用 pip 安装了瓶子框架:

sudo pip install bottle

然后我创建了一个简单的瓶子脚本 test.py 的 hello world 页面:

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=80)

然后用

运行这个脚本
sudo python test.py

它启动成功,当我登录另一个 SSH 会话并使用 curl 测试它时,我在 80 端口上得到了正常响应。

但是当我尝试从我的主机 Windows 机器访问此脚本时,我在 Chrome 中收到错误 ERR_CONNECTION_RESET 并且页面无法正常工作。

我已经尝试在 Windows 10 上关闭我的防火墙 - 没有帮助。造成这种麻烦的原因是什么?

谢谢!

【问题讨论】:

    标签: vagrant bottle portforwarding


    【解决方案1】:

    找到答案了,感谢我的一位朋友。

    事实证明,端口转发工作正常,但问题出在脚本本身。这里的重点是test.py中的如下字符串:

    run(host='localhost', port=80)
    

    通过这种方式,我们设置了 Bottle 来监听来自 localhost 的请求,但是 vagrant 将来自 Windows 机器的所有请求作为 Ubuntu 机器的外部请求发送。

    因此,解决问题的一种方法(粗略的方法)就是设置以下命令,而不是之前的命令:

    run(host='0.0.0.0', port=80)
    

    那么一切都应该正常工作。

    【讨论】:

      猜你喜欢
      • 2017-05-31
      • 2016-06-30
      • 2012-02-20
      • 2012-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多