django+nginx+uwsgi,文件浏览器不上传

Posted

技术标签:

【中文标题】django+nginx+uwsgi,文件浏览器不上传【英文标题】:django+nginx+uwsgi, filebrowser not uploading 【发布时间】:2012-11-10 09:33:09 【问题描述】:

我已经将一个 django 站点从 apache+wsgi 转换为 nginx+uwsgi。除了使用文件浏览器上传文件外,一切似乎都正常工作。这确实适用于 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 配置

[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】:

Nginx 有一个 client_max_body_size 指令,它限制了可以发送的 HTTP 正文的大小。它的默认值为 1 兆,所以你应该添加 client_max_body_size = 20m 或类似的东西。您不会收到错误,因为大多数浏览器不会替换 413 错误

http://wiki.nginx.org/HttpCoreModule#client_max_body_size nginx upload client_max_body_size issue nginx - client_max_body_size has no effect

【讨论】:

感谢您的回复。我应该提到我要上传的文件大小只有 14K 左右,所以即使是默认的 1MB 也应该足够了。无论如何,我都会尝试一下。

以上是关于django+nginx+uwsgi,文件浏览器不上传的主要内容,如果未能解决你的问题,请参考以下文章

Nginx与django+uwsgi成功勾搭的始末(下)

08 nginx+uWSGI+django+virtualenv+supervisor发布web服务器

nginx+uwsgi 部署django

Django+nginx+uwsgi部署教程

ubuntu12上部署Django1.8.4+uwsgi+nginx超级详细流程配置到云服务器

Django+uwsgi+vue部署(不使用nginx)