2012-07-22 160 views
3

我正在爲一個側面項目膳食規劃工具放在一起的PoC。我使用nginx和uwsgi在AWS上運行的django。該網站正在運行並加載頁面,但沒有傳遞給瀏覽器的CSRF cookie。Django後面uwsgi + nginx無法設置cookie

CSRF和消息中間件都啓用,並且django調試輸出列出了'CSRF_COOKIE'的值,並且我的瀏覽器啓用了cookie,所以我懷疑Django試圖設置一個cookie, nginx或uwsgi。

配置如下信息:

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/*; 
} 
+0

當你說你在AWS上運行它時,你的意思是單個EC2實例嗎? – jamieb 2012-07-22 23:05:16

+0

是的它使用EC2微。我只是偶然發現我認爲我做錯了什麼。 – Peter 2012-07-23 01:18:35

回答

2

它看起來像這個問題有可能會一直在nginx.conf的服務器名稱。它突然開始工作,我改變了唯一的做法是使server_name匹配站點的域名。另一方面,改回它似乎沒有重新引入這個問題,所以要麼我沒有正確地重新啓動nginx,要麼畢竟這不是問題。

該網站現在正在開展工作,但這是我對原因和解決方案並沒有令人滿意的理解的情況之一,所以如果任何人都可以證實這一假設或指出其他事情,我很樂意提供意見。