Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python ec2上的Nginx、django和弹性ip没有响应_Python_Django_Amazon Web Services_Nginx_Amazon Ec2 - Fatal编程技术网

Python ec2上的Nginx、django和弹性ip没有响应

Python ec2上的Nginx、django和弹性ip没有响应,python,django,amazon-web-services,nginx,amazon-ec2,Python,Django,Amazon Web Services,Nginx,Amazon Ec2,我的AmazonEC2实例有问题。我无法从浏览器访问在端口8004上运行的django应用程序 我在AmazonEC2上安装了一个实例,安装了django和nginx。这是在ubuntu trusty 14.04上运行的。我在外部dns名称服务器上有一个域,并且我已经正确地将该域指向了我的amazon ec2实例的公共弹性ip。当我ping服务器时,它工作并显示公共ip 我以前见过类似的线程,在大多数情况下,这方面的问题是因为没有为特定端口添加防火墙规则,也就是说它们不向外部世界开放。在我的例子

我的AmazonEC2实例有问题。我无法从浏览器访问在端口8004上运行的django应用程序

我在AmazonEC2上安装了一个实例,安装了django和nginx。这是在ubuntu trusty 14.04上运行的。我在外部dns名称服务器上有一个域,并且我已经正确地将该域指向了我的amazon ec2实例的公共弹性ip。当我ping服务器时,它工作并显示公共ip

我以前见过类似的线程,在大多数情况下,这方面的问题是因为没有为特定端口添加防火墙规则,也就是说它们不向外部世界开放。在我的例子中,我确保在创建实例时端口22、80和443是打开的。我甚至打开了8000-8100端口

注意:最终我会让django使用gunicorn运行,但为了测试它,我只需运行manage.py runserver 8004即可

下面是AmazonEC2上开放端口的入站规则的快照

可能是因为我在启动实例后正在编辑入站规则吗?这不是你应该能做到的吗

Nginx运行没有问题,我将在下面发布我的配置。我不知道为什么这不起作用。在这个问题上,我找到了任何线索,但似乎没有什么能解决它

更新:我现在可以确认我可以通过ip直接访问我的django站点 ip:8004。显然,这不是端口的问题,但可能与nginx config或我的DNS设置有关

我的nginx配置(我用x替换了ip,用sub.domain.com替换了域。然后我尝试从sub.domain.com访问该站点)


如果要通过端口8004从Internet访问django dev服务器,请尝试:

manage.py runserver 0.0.0.0:8004
默认情况下,dev服务器将只在127.0.0.1上侦听

但是,如果您通过Nginx访问dev服务器,即连接到
your.domain.com:80
,则不需要此功能。在这种情况下,Nginx将充当代理,将请求传递给dev服务器


顺便说一句,您可以在启动实例后编辑现有安全组的规则,这非常有效。

为了回答我自己的问题,我成功地没有分配弹性ip,而只是在端口80443上侦听。所以在我的nginx conf中,而不是这个

server_name sub.domain.com;
listen xx.xx.xx.xxx:80;
我现在只有

server_name sub.domain.com
listen 80;
443也一样

server_name sub.domain.com
listen 80;