【问题标题】:Django 0.0.0.0:80; can't access remotelyDjango 0.0.0.0:80;无法远程访问
【发布时间】:2021-07-30 17:03:40
【问题描述】:

我正在尝试从同一网络上的另一台计算机访问我的 Django 服务器。我已经设置了我的服务器,可以使用python manage.py runserver 正确查看所有内容并转到http://127.0.0.1:8000,但是当我尝试使用python manage.py runserver 0.0.0.0:80 时,我无法从另一台计算机查看我的 Django 页面。托管 Django 服务器的计算机的内网 IP 为 192.168.1.146。在我的辅助计算机上,我启动浏览器并尝试访问 http://192.168.1.146:80 无济于事。我还转发了端口 80(我也尝试过 8000)也无济于事:(。帮助!

【问题讨论】:

    标签: django


    【解决方案1】:

    我在 Windows 计算机上遇到了同样的问题,并使用 python manage.py runserver 192.168.1.146:80 而不是 0.0.0.0 启动了 Django 服务器。 (我当然使用了不同的 IP 地址)。

    之后,弹出一个 Windows 防火墙对话框,询问我是否应该解除对端口的阻止(是)。然后局域网中的其他计算机可以使用 192.168.1.146:80 访问 Django 服务器。

    【讨论】:

      【解决方案2】:

      为了让它对我有用,我在终端(Mac OS X 10.8.2)中运行了sudo python manage.py runserver 0.0.0.0:80,然后在你的ipad(或iphone)浏览器中,转到http://[your ip address]/。我没有必须这样做:Testing Django website on iphone

      【讨论】:

        【解决方案3】:

        从 Ubuntu 运行它时,当我尝试这样做时,它说权限被拒绝:

            python manage.py runserver 0.0.0.0:80
        

        由于这是一个权限问题,因此就像 Ryan 和 gtujan 所说的那样,以下工作正常。

            sudo python manage.py runserver 0.0.0.0:80
        

        注意:您在端口 80 上运行服务器,这是一个 HTTP 端口。因此,当从您的网络浏览器输入网址时,您不一定需要在您的网址中输入“:80”。

            http://192.168.1.146:80/
        

        以下内容就足够了。即使您确实输入了“:80”,它也被认为是相同的。

            http://192.168.1.146/
        

        但是对于其他端口号,例如 8000 等,需要 :8000 作为 URL 的一部分。

        【讨论】:

          【解决方案4】:

          听起来这是一个防火墙问题。您确定打开服务器计算机上的 80 端口了吗?

          【讨论】:

          • 这确实是我的问题。对于 linux 用户,您需要使用 sudo ufw allow 8000/tcp 之类的命令允许端口 8000 或您正在服务的任何端口
          • @tao 谢谢。您应该将其发布为答案。
          【解决方案5】:

          根据您提到的转发端口 80,听起来您的第二台计算机与运行 Django 的计算机位于不同的网络(路由器)上。在这种情况下,您应该浏览到 Django 网络的 路由器 的 IP - 192.168 地址仅在该路由器后面可见,并且端口转发将确保您的请求到达正确的机器。

          【讨论】:

            【解决方案6】:

            你在什么操作系统上运行它? 您是否尝试过赋予命令 root 权限? (假设你在 ubuntu/linux 上运行它)

            尝试运行它:

            sudo python manage.py runserver 0.0.0.0:80
            

            【讨论】:

              【解决方案7】:
              sudo ufw allow 8000/tcp
              

              你可以试试这个,它也对我有用。

              【讨论】:

                【解决方案8】:

                据我了解,0.0.0.0 是不可路由的 IP。

                如果您将套接字绑定到地址,它只会在本地机器上工作。

                【讨论】:

                • 其实0.0.0.0是指所有可能的IP。它确实是不可路由的,但确实有这个特殊的含义。
                • 0.0.0.0 表示在所有接口上绑定。所以在本地它会绑定到127.0.0.1,它会绑定到任何卡上的任何接口。如果您在 NAT 后面使用 NAT 转发端口,这也是一个不错的选择,因为 django 不会对为什么它被错误的 IP 寻址感到困惑
                猜你喜欢
                • 1970-01-01
                • 2016-11-11
                • 1970-01-01
                • 2020-03-11
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多