EC2 Django App仅在没有www的情况下可访问。字首

时间:2013-10-26 18:46:18

标签: django configuration amazon-web-services nginx amazon-ec2

如果我访问: myapp.com(它有效)

如果我访问: www.myapp.com(抛出http 500错误) 要么 完全限定版本:http://www.myapp.com(抛出http 500错误)

http 500错误是:

xx.xx.xxx.xxx - - [26/Oct/2013:18:33:10 +0000] "GET / HTTP/1.1" 500 460 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:24.0) Gecko/20100101 Firefox/24.0"

我收到此错误,来自用作我的nginx配置一部分的access.log(注意error.log没有任何新内容):

server {
        #listen       8001;
        listen       80;
        #listen 127.0.0.1;
        server_name     myapp.com  www.myapp.com;               #*.myapp.com;
        #server_name ec2-xx-xxx-xxx-xx.compute-1.amazonaws.com;
        access_log /home/ubuntu/virtualenv/myapp/error/access.log;
        error_log /home/ubuntu/virtualenv/myapp/error/error.log warn;
        connection_pool_size 2048;

        fastcgi_buffer_size 4K;
        fastcgi_buffers 64 4k;

        root /home/ubuntu/virtualenv/myapp/homelaunch/;

        location /static/ {
            alias /home/ubuntu/virtualenv/myapp/homelaunch/static/;
            #alias /static/;
            #root /home/ubuntu/virtualenv/myapp/homelaunch/;
        }

        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            #proxy_set_header X-Forwarded-Host $server_name;
            #proxy_set_header X-Real-IP $remote_addr;
            add_header P3P 'CP="ALL DSP COR PSAa PSDa OUR NOR ONL UNI COM NAV"';
        }
    }

我的 ec2安全政策如下所示: img

我在这里做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

对于任何设置而言,这似乎都不是settings.py的问题,settings.py的设置未应用,因为我没有:

1)先停止Gunicorn并停止Nginx 2)然后使用适当的命令再次启动它们,如:

sudo /usr/local/bin/gunicorn -c /home/ubuntu/virtualenv/gunicorn_config.py myapp.wsgi; sudo nginx -c /etc/nginx/nginx.conf;

特别感谢上面的用户史蒂夫提出的要点。

如果有人遇到这样的问题,您的应用可通过<domainhere>.com访问,但未来www.<domainhere>.com无法访问,请检查以下内容: 1)确保您的ALLOWED_HOSTS=[]具有以下设置:

ALLOWED_HOSTS = ['www.myapp.com','myapp.com','<server-ip-here>','ec2-xx-xxx-xxx-xxx.compute-1.amazonaws.com']

2)你正在使用如下命令正确启动gunicorn和nginx:

sudo /usr/local/bin/gunicorn -c /home/ubuntu/virtualenv/gunicorn_config.py myapp.wsgi; 
sudo nginx -c /etc/nginx/nginx.conf;

3)使用这样的命令检查两者是否正常运行:

ps ax|grep nginx; ps ax|grep gunicorn;
祝你好运!