Virtualbox客户端的Win7主机和Ubuntu服务器端口转发问题

4
我正在尝试设置一个我认为是相当常见的Django开发服务器配置,但是我在客户机操作系统和主机操作系统之间的端口转发方面遇到了问题。
我运行:
- Win7宿主机 - VirtualBox 4.1.2 - Ubuntu Server 11.04虚拟机。
我使用NAT连接VirtualBox,并使用内置的VirtualBox端口转发功能(从客户机的“Settings -> Network -> Port Forwarding”菜单中),使我的.vbox XML包含以下部分:
<NAT>
        <DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/>
        <Alias logging="false" proxy-only="false" use-same-ports="false"/>
        <Forwarding name="guestdjango" proto="1" hostip="127.0.0.2" hostport="9080" guestport="8080"/>
        <Forwarding name="guesthttp" proto="1" hostip="127.0.0.2" hostport="8080" guestport="80"/>
        <Forwarding name="guestssh" proto="1" hostip="127.0.0.2" hostport="2222" guestport="22"/>
</NAT>

从主机上,我可以通过2222端口SSH/SFTP到虚拟机中,我可以在127.0.0.2:8080看到Nginx的“欢迎使用Nginx!”页面。

确认完这些后,我安装了Django并运行了Django服务器:

python manage.py runserver 127.0.0.1:8080

从客户端使用Lynx,您可以在127.0.0.1:8080看到“恭喜”Django页面。
然而,当我从主机导航到127.0.0.2:9080时,会出现“连接被重置”的错误。
1个回答

20

我不完全确定端口转发是如何工作的,但通常要将 runserver 暴露给外部网络,您需要将其绑定到除 localhost 以外的其他内容 - 即运行 python manage.py runserver 0.0.0.0:8080。看看这是否有效。


2
这正是我想要的答案。我在发布后就找到了答案,但忘记回来编辑了。根据文档:“请注意,默认的IP地址127.0.0.1无法从网络上的其他计算机访问。为了使开发服务器对网络上的其他计算机可见,请使用其自己的IP地址(例如192.168.2.1)或0.0.0.0或::(启用IPv6)。 - urbushey
谢谢。这对我有用。我的客户操作系统检索到了新的IP地址,我可以通过http://192.128.1.5:8000访问我的主机操作系统(其中192.168.1.5是我的主机操作系统的IP地址)。 - Anton Danilchenko
丹尼尔,这正是它对我不起作用的原因。很好的发现! - 0leg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接