【问题标题】:Why can I connect to http://127.0.0.1:8000/ but not to http://192.168.1.6/为什么我可以连接到 http://127.0.0.1:8000/ 但不能连接到 http://192.168.1.6/
【发布时间】:2013-10-10 14:56:56
【问题描述】:

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

在主机操作系统上(即,OS X 在机器的金属上运行,地址为 192.168.1.6)我可以通过浏览器导航到 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 端口?

【问题讨论】:

标签: django macos sockets networking firewall


【解决方案1】:

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

python manage.py runserver 192.168.1.6:8000

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

python manage.py runserver 0.0.0.0:8000

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-08
        • 2010-09-17
        • 2018-04-24
        • 1970-01-01
        • 2017-10-08
        • 1970-01-01
        • 2020-12-25
        • 1970-01-01
        相关资源
        最近更新 更多