【问题标题】:Cannot access Django server on EC2 instance无法访问 EC2 实例上的 Django 服务器
【发布时间】:2022-03-14 19:03:27
【问题描述】:

我创建了一个 EC2 实例。在上面安装了 Python 3.4,然后在上面安装了 Django 1.10.6。我正在尝试开发我的第一个 django 应用程序

我启动了 django 服务器。

python manage.py runserver

我无法通过http://n.n.n.n:8000 访问。 我收到 ERR_CONNECTION_REFUSED 错误。

我返回 EC2 实例并将协议/端口添加到安全组。这是我添加端口/协议后的样子

Custom TCP Rule  TCP  8000  0.0.0.0/0
Custom TCP Rule  TCP  8000  ::/0

它没有工作。我什至添加了一条规则,允许来自任何地方的所有流量。还是不行。

但是,如果我按以下方式启动 django 服务器

python manage.py runserver 0.0.0.0:8000

我收到以下错误:

DisallowedHost at /
Invalid HTTP_HOST header: 'n.n.n.n:8000'. You may need to add 'n.n.n.n' to ALLOWED_HOSTS.

如果尝试将 IP 添加到 ProjectName/settings.py,

ALLOWED_HOSTS = ['n.n.n.n'] #Make sure your host IP is a string

我收到 ERR_CONNECTION_REFUSED 错误

我可以 ping 通 IP。我可以 ssh(有规则允许 ssh)。好像没有防火墙。

$ sudo service iptables status
iptables: Firewall is not running.

为什么我无法访问 http/django 服务器?

谢谢

【问题讨论】:

    标签: python django security amazon-web-services amazon-ec2


    【解决方案1】:

    实际上,当我将主机添加到 ProjectName/settings.py 文件时,我一定没有正确启动服务器。我又试了一次,这次成功了。

    看起来像

    django 服务器在 EC2 实例上启动,如下

    python manage.py runserver
    

    可能无法从其他机器访问。

    django 服务器以以下方式启动

    python manage.py runserver 0.0.0.0:8000
    

    如果主机的 IP 地址被添加到 ProjectName/settings.py 文件中的 ALLOWED_HOSTS 中,则可以从 Internet 访问

    ALLOWED_HOSTS = ['n.n.n.n'] #Make sure your host IP is a string
    

    这都是除了安全组中的条目

    【讨论】:

    • 嗨@user2125853,当您说将主机IP添加到ALLOWED_HOSTS时,它是ec2实例的IP还是您尝试从中访问Django的机器的IP?
    【解决方案2】:

    允许主机的 IP 是指您要从中访问 Django 的设备的 IP。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2012-03-10
      • 1970-01-01
      • 2018-09-27
      • 2022-12-04
      • 2014-12-14
      • 2017-11-07
      • 2017-05-03
      相关资源
      最近更新 更多