我有Vagrant / VirtualBox运行Ubuntu 12.04 LTS OS。我已将Vagrant配置为将来宾端口8000转发到我的主机端口8888。
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] -- 8000 => 8888 (adapter 1)
[default] Booting VM...
[default] Waiting for VM to boot. This can take a few minutes.
[default] VM booted and ready for use!
当虚拟机启动时,我在端口8000上启动Django dev服务器。
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
好的,我可以把它放在后台,我甚至可以curl localhost:8000
从服务器获取一些输出
<div id="explanation">
<p>
You're seeing this message because you have <code>DEBUG = True</code> in your
Django settings file and you haven't configured any URLs. Get to work!
</p>
</div>
但是当我尝试使用Firefox / Chrome / Telnet从我的主机点击服务器时,我发现连接重置/连接丢失/ ERR_CONNECTION_RESET等。
首先我认为它可能是一些iptables的事情,但事实证明Ubuntu默认允许一切。我还关闭了主机上的防火墙。我怎样才能深究这一点?
答案 0 :(得分:77)
我让Django听127.0.0.1:8000(默认)
正如Mitchell在这里的回答所解释的那样:Vagrant's port forwarding not working我应该一直在听0.0.0.0。以下是他回答的引用:
我想添加一个额外的注释,通常这是由 VM中的服务器,因为它绑定到127.0.0.1,这是环回。 您需要确保服务器绑定到0.0.0.0以便这样做 所有接口都可以访问它。
如果你正在使用Django,你想要像这样启动开发服务器:./manage.py runserver 0.0.0.0:8000
答案 1 :(得分:2)
1)。项目必须以python manage.py runserver 0.0.0.0:8000
运行
如果这不能解决您的问题,那么
2)。打开您的Vagrant文件并添加
config.vm.network "forwarded_port", guest: 8000, host: 8001
这之后
# config.vm.network "forwarded_port", guest: 80, host: 8080
行
这项工作在我的案例中;)
注意:运行vagrant up
时提供此正向端口信息
....
==> default: Forwarding ports...
default: 8000 => 8001 (adapter 1)
default: 22 => 2222 (adapter 1)
答案 2 :(得分:1)
另一种解决方案是将ssh tunneling与流浪者一起使用。
在cd
所在的目录中打开终端Vagrantfile
。
假设您的虚拟机启动并运行(vagrant up
),请执行以下命令。
# save vagrant ssh config to a file named `vagrant-ssh-config`
vagrant ssh-config > vagrant-ssh-config
然后将访客的端口8000转发给主持人。
ssh -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default
现在只需打开浏览器并查看127.0.0.1:8000
即可。
请注意,上一个命令也将在ssh服务器上打开一个shell。如果要在ssh服务器上打开没有shell的ssh隧道,请添加-N
ssh -N -L 8000:127.0.0.1:8000 -F vagrant-ssh-config default