django + nginx + uwsgi,filebrowser无法上传

时间:2012-11-22 02:18:12

标签: django nginx uwsgi django-filebrowser

我已将django网站从apache + wsgi转换为nginx + uwsgi。除了使用filebrowser上传文件外,一切似乎都能正常工作。这确实适用于apache + wsgi,所以我假设它是nginx或uwsgi中的配置问题。

我看到的问题是上传不会返回错误,但文件没有写入磁盘。

流量由前端nginx实例代理到我的nginx实例。

我的nginx.conf

worker_processes  4;

events {
    worker_connections  1024;
}

http {
    access_log  /home/username/logs/user/access_nginx_uwsgi.log combined;
    error_log   /home/username/logs/user/error_nginx_uwsgi.log  crit;

    include mime.types;
    sendfile on;

    set_real_ip_from   127.0.0.1;
    real_ip_header     X-Forwarded-For;

    include /home/username/webserver/nginx/*.conf;

}

我的虚拟主机配置是。

server {
    listen 127.0.0.1:26293;
    server_name domainname.com;

    access_log  /home/username/logs/user/access_tdebt.log combined;
    error_log   /home/username/logs/user/error_tdebt.log  crit;

    location /static/ {
        alias /home/username/.virtualenvs/tdebt/tdebt/site_static/;
        expires 7d;
    }

    location /media/ {
        alias /home/username/.virtualenvs/tdebt/tdebt/site_media/;
        expires 7d;
    }
    location / {
        include uwsgi_params;
        uwsgi_pass unix:///home/username/webserver/sock/tdebt.sock;
    }
}

uwsgi config

[uwsgi]
chdir = /home/username/.virtualenvs/tdebt
home=/home/username/.virtualenvs/tdebt
wsgi-file = /home/username/.virtualenvs/tdebt/tdebt/webserver_config/wsgi.py
env = DJANGO_SETTINGS_MODULE=tdebt.settings
master = true
pidfile = /home/username/webserver/pid/tdebt.pid
socket = /home/username/webserver/sock/tdebt.sock
processes = 2
threads = 30
enable-threads = true
harakiri = 120
vacuum = true
reload-on-rss = 30
log-x-forwarded-for = true
idle = 300
procname-master = [username-tdebt] uWSGI Master
procname = [username-tdebt] uWSGI Worker
logto = /home/username/webserver/logs/tdebt_uwsgi.log
logdate = true

感谢任何帮助。如果有任何其他信息可能有所帮助,请告诉我。

更新

问题似乎与django-filebrowser和uwsgi有关,因为可以使用Apache / mod_uwsgi复制问题。

更新

问题在于我使用的django-filebrowser的分支。由于某种原因不适用于uwsgi。

1 个答案:

答案 0 :(得分:3)

Nginx有一个client_max_body_size指令,用于限制HTTP正文的大小。它的默认值为1 meg,因此您应该添加client_max_body_size = 20m或类似内容。您不会收到错误,因为大多数浏览器都不会替换413错误