django - 无法连接到运行 Django 的虚拟机

标签 django http virtual-machine virtualbox portforwarding

使用 VirtualBox,我有一个运行 Centos 7 的启用了 NAT 的虚拟机。主机操作系统是 Windows 7。我似乎无法访问在虚拟机内运行的 Django Web 服务器。我错过了什么?

我为虚拟机设置了两个端口转发规则:

Port Forwarding Rules

我在 guest 操作系统上启动 Django 网络服务器:

python manage.py runserver 0.0.0.0:8000

然后我尝试访问主机操作系统上的网页:

http://localhost:8000

Google Chrome 给我错误代码 ERR_CONNECTION_RESET

curl 在主机操作系统上的结果:

[user@win7 ~ ]$ curl http://localhost:8000
curl: (56) Recv failure: Connection reset by peer

这是在 guest 操作系统上执行的 netstat 结果:

[user@vm ~ ]$ netstat -na | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN

这是在主机操作系统(使用 Cygwin)上执行 netstat 的结果:

[user@win7 ~ ]$ netstat -na | grep 8000
  TCP    0.0.0.0:8000           0.0.0.0:0              LISTENING

还值得一提的是,SSH 规则有效。我可以毫无问题地通过 SSH 连接到机器。

最佳答案

这不是解决方案,而是解决我的问题的方法。也许这会帮助遇到与我类似的问题并且只想连接到他们 VM 的网络服务器的任何人。

由于 SSH 正在运行,我想我可以通过 SSH 隧道访问该网页。通过命令行这样做的语法是:

ssh -L <local-port>:<remote-host>:<remote-port>

所以在我的情况下,如果我想通过命令行打开隧道,我会这样做:

ssh -L 8000:127.0.0.1:8000

这将允许我浏览到 http://localhost:8000 并访问该网站。

您也可以通过 PuTTY 执行此操作,但我不会在此处进行解释,因此只需 Google 即可获取指南。

关于django - 无法连接到运行 Django 的虚拟机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958890/

相关文章:

javascript - 创建字典的简单算法

http - Hadoop 中使用哪种协议(protocol)将数据从 Mappers 复制到 Reducers?

http - Go Web 服务器不处理 POST 请求

ubuntu - 如何正确连接windows azure虚拟机和ubuntu系统?

javascript - AJAX 刷新、setInterval 计时和本地主机崩溃

django - 在 django rest 框架中执行 perform_update 时检查实例的当前值

django - 如何在 Django 用户名中包含正斜杠

angular - 用于 Mockups 的模拟 Http 后端

ssh - 在SSH窗口中使用“No such file or directory”命令将文件上传到虚拟机实例时出现“gcloud compute scp”错误

docker - 如果来自守护进程的错误响应是 : Cannot Kill Container [. ..] 权限被拒绝,如何停止运行容器?