我在流浪汉端口转发方面遇到了以下问题:
我已经在我的Windows 10笔记本电脑上使用“hashicorp / precise64”框安装了vagrant,创建了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
然后我创建了一个hello world页面的简单瓶子脚本test.py:
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上关闭防火墙 - 没有帮助。造成这种麻烦的原因是什么?
谢谢!
答案 0 :(得分:0)
找到答案,谢谢我的一位朋友。
事实证明端口转发工作正常,但问题出在脚本本身。这里的关键点是test.py中的以下字符串:
run(host='localhost', port=80)
通过这个我们设置瓶子来监听来自localhost的请求,但是vagrant从Windows机器发送所有请求作为Ubuntu机器的外部请求。
因此,解决问题的一种方法(粗略的)只是设置以下命令,而不是前一个:
run(host='0.0.0.0', port=80)
然后一切都应该正常工作。