无法在EC2实例上访问Django服务器

时间:2017-03-05 17:13:32

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

我创建了一个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服务器?

由于

1 个答案:

答案 0 :(得分:0)

实际上,当我将主机添加到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

这是除了安全组中的条目之外的所有内容