2014-11-23 31 views
2

我有一个问题,我的亚马逊ec2实例。我无法从浏览器访问在端口8004上运行的django应用程序。Nginx的,与弹性ip没有响应ec2的Django

我在亚马逊ec2上安装了一个实例,安装了django和nginx。这是在Ubuntu的可靠14.04上运行。我在外部DNS名称服务器上有一个域,并且我已经正确地将该域指向我的amazon ec2实例的公共弹性IP。当我ping服务器它的作品,它显示公共IP。

我以前见过类似的线程,并且在大多数情况下,这是因为防火墙规则没有被添加到特定的端口,也就是说他们没有向外界开放。在我的情况下,我确保在创建实例时端口22,80和443已打开。我甚至将端口8000-8100打开。

注:最后,我将用Django的运行gunicorn但只是为了测试它,我只是通过去运行它:manage.py runserver命令8004

这里是我的入站规则看怎么样开放的快照亚马逊ec2上的端口 enter image description here

难道是因为我在启动实例后编辑入站规则?这不是你想要做的吗?

Nginx正在运行没有问题,我会在下面发布我的配置。我不知道为什么这不起作用。我遵循了关于这个主题的任何线索,似乎没有任何解决方法。

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

我的nginx的配置(我已经更换了IP与X,它与sub.domain.com域。然后我尝试从sub.domain.com访问网站)如果你想

upstream docko_server { 
    server 127.0.0.1:8004 fail_timeout=0; 
} 

server { 
    server_name sub.domain.com; 
    listen xx.xx.xx.xxx:80; 
    return 303 https://$host$request_uri; 
} 

# HTTPS server 
# 
server { 
    listen xx.xx.xx.xxx:443; 
    server_name sub.domain.com; 

    ssl on; 
    ssl_certificate ssl/server.crt; 
    ssl_certificate_key ssl/server.key; 

    ssl_session_timeout 5m; 

    ssl_protocols SSLv3 TLSv1; 
    ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; 
    ssl_prefer_server_ciphers on; 

    client_max_body_size 25M; 

    access_log /webapps/docko/logs/nginx-access.log; 
    error_log /webapps/docko/logs/nginx-error.log; 

    location /assets/ { 
     alias /webapps/docko/docko/staticfiles/; 
    } 


    location/{ 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 


     proxy_set_header Host $http_host; 

     proxy_redirect off; 


     if (!-f $request_filename) { 
      proxy_pass http://docko_server; 
      break; 
     } 
    } 

} 

回答

0

要回答我自己的问题,我成功了没有分配弹性IP,但只是只听在端口80,443。所以在我的nginx conf而不是这个。

server_name sub.domain.com; 
listen xx.xx.xx.xxx:80; 

我现在只是有

​​

同为443

1

通过端口8004尝试访问从互联网上的Django开发服务器:

manage.py runserver 0.0.0.0:8004 

开发服务器将只监听127.0.0.1。

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

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