4

I'm putting together a PoC for a side-project meal-planner tool. I'm using django running on AWS with nginx and uwsgi. The site is running and loading pages, but there is no CSRF cookie being passed to the browser.

The CSRF and Messages middleware are both enabled, and the django debug output lists a value for 'CSRF_COOKIE', and my browser has cookies enabled, so I suspect that Django is attempting to set a cookie which is getting stripped out by nginx or uwsgi.

Configuration information below:

uwsgi.ini

[uwsgi]
chdir=/opt/django/mealplanner/src/mealplanner/
module=mealplanner.wsgi:application
master=True
autoload=True
pidfile=/opt/run/mealplanner.pid
vacuum=True
max-requests=5000
socket=/opt/run/mealplanner.sock
chmod-socket=True
harakiri=120
processes=1
home=/opt/django/mealplanner/src
daemonize=/opt/log/uwsgi/mealplanner.log

nginx.conf

user www-data;
worker_processes 1;
pid /opt/run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;                                                                                 
}

http {

        ##                                                                                                 
        # Basic Settings                                                                                   
        ##                                                                                                 

        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 65;
        types_hash_max_size 2048;
        # server_tokens off;                                                                               

        # server_names_hash_bucket_size 64;                                                                
        # server_name_in_redirect off;                                                                     

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##                                                                                                 
        # Logging Settings                                                                                 
        ##                                                                                                 

        access_log /opt/log/nginx/access.log;
        error_log /opt/log/nginx/error.log;

        ##                                                                                                 
        # Gzip Settings                                                                                    
        ##                                                                                                 

        gzip on;
        gzip_disable "msie6";

        # gzip_vary on;                                                                                    
        gzip_proxied any;
        gzip_comp_level 2;
        # gzip_buffers 16 8k;                                                                              
        # gzip_http_version 1.1;                                                                           
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml \
application/xml+rss text/javascript;

        server {
               listen 80;
               # I've also tried the dns name I access the site with as the server name.
               server_name ec2-xx-xx-xx-xx.us-west-2.compute.amazonaws.com xx.xx.xx.xx;
               client_max_body_size 50M;
               set $home /opt/django/mealplanner;
               root $home;
               location / {
                        include uwsgi_params;
                        uwsgi_pass unix://opt/run/mealplanner.sock;
                        root $home;
               }
        }

        ##                                                                                                 
        # Virtual Host Configs                                                                             
        ##                                                                                                 

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}
4

1 回答 1

3

看起来问题可能出在 nginx.conf 中的 server_name 上。它突然开始工作,我唯一改变的是使 server_name 与站点的域名匹配。另一方面,将它改回来似乎并没有重新引入问题,所以要么我没有正确重新启动 nginx,要么这根本不是问题。

该网站现在正在运行,但这是我对原因和解决方案没有令人满意的理解的情况之一,所以如果有人可以证实这个假设或指出其他事情,我会欢迎输入。

于 2012-07-23T01:37:58.067 回答