11

我在本地 IP 地址为 192.168.1.6 的机器上运行 OS X Mountain Lion(由网络实用程序和 ifconfig 报告),并且在我想连接的端口 8000 上运行本地 (Django) 开发 Web 服务器来自在同一台机器上运行来宾操作系统的虚拟机。

在主机操作系统上(即运行在地址为 192.168.1.6 的机器上的 OS X)我可以通过浏览器导航到 127.0.0.1:8000 连接到我的测试 Web 服务器;或本地主机:8000;但在使用机器的本地 IP 地址时不会。这就是使这更加令人困惑的原因:

  • 路由器没有过滤端口;而且,可以肯定的是,我已将其设置为将端口 8000 和 22 显式转发到 192.168.1.6;说到 22 端口,
  • 当我启动 SSH 服务时,我可以通过 ssh 192.168.1.6 连接(从命令行)
  • 这不是浏览器问题,因为我也无法远程登录到 192.168.1.6 端口 8000(连接被拒绝),而我可以远程登录到 127.0.0.1 端口 8000,我也可以远程登录到 192.168.1.6 端口 22
  • 防火墙设置为关闭(如系统偏好设置中所述)但为了更加安全,我还设置了 ipfw 规则以允许所有内容通过

以下是ipfw规则:

00100 allow tcp from any to any dst-port 8000
65535 allow ip from any to any

这是我的测试服务器确实正在监听该端口的额外确认:

netstat -an | grep 8000
tcp4       0      0  127.0.0.1.8000         *.*                    LISTEN 

那么这里发生了什么?不知何故,端口 22 的处理方式与端口 8000 不同,但我能想到的每个地方都找不到我找不到的那些差异。为什么我不能使用它的本地 IP 地址进入这台机器的 8000 端口?

4

3 回答 3

26

当你启动 Django 开发服务器时,你需要明确地给出地址:

python manage.py runserver 192.168.1.6:8000

或者,如果您希望服务器在所有接口上运行,您可以使用:

python manage.py runserver 0.0.0.0:8000

在其他情况下,Django 开发服务器默认只在本地界面上运行。

于 2013-10-03T20:39:04.143 回答
1

对我来说,问题是我在尝试复制服务器地址时不小心退出了服务器。因此,不要ctrl+C只在浏览器中写下地址。

于 2020-11-12T02:57:48.367 回答
-1

我解决了这个问题。您可能缺少一些东西。在下面列出它们 -

1.一旦启动服务器,无论如何都不要按Ctrl+C。你可能会按它来复制到url,这会意外关闭服务器,因为它可能会发生。

2. 而不是http://127.0.0.1:8000/ ...将端口号更改为http://127.0.0.1:8080/ ...这样就可以了。

3.尝试更改防火墙设置并允许该应用程序。

4.尝试用不同的浏览器和隐身打开它。

上述步骤帮助解决了我的问题。希望他们也能帮助你...... :)

于 2017-05-19T07:08:17.160 回答