Nginx upload_模块将仅在/var/www中存储文件

Nginx upload_模块将仅在/var/www中存储文件,nginx,Nginx,当前设置: nginx在端口80上侦听,将example.com请求转发到8080上的Apache Apache侦听端口8080,通过wsgi连接到Django应用程序 Django表单将图像上载到subdomain photos.example.com/upload/ 这似乎来自我在nginx中的配置文件,但我无法确定。我主要尝试在nginx中更改upload\u store指令。 我希望用户上传的照片存储在/var/www/dev/source/nginx/media中/ 我现在能做的最

当前设置:

  • nginx在端口80上侦听,将example.com请求转发到8080上的Apache
  • Apache侦听端口8080,通过wsgi连接到Django应用程序
  • Django表单将图像上载到subdomain photos.example.com/upload/
这似乎来自我在nginx中的配置文件,但我无法确定。我主要尝试在nginx中更改upload\u store指令。 我希望用户上传的照片存储在/var/www/dev/source/nginx/media中/

我现在能做的最好的事情就是将/var/www符号链接到我想要的文件夹中

相关nginx配置:

server {
        client_max_body_size 100m;
        listen 80;
        server_name photos.example.com;
        access_log /var/log/nginx/photos.example.com/access.log;
        error_log /var/log/nginx/photos.example.com/error.log;


        # Upload form should be submitted to this location
        location /upload {
                # Pass altered request body to this location

                # Store files to this location
                upload_store /var/www/dev/source/nginx/media 1;
                # Set specified fields in request body
                upload_set_form_field $upload_field_name.name "$upload_file_name";
                upload_set_form_field $upload_field_name.content_type "$upload_content_type";
                upload_set_form_field $upload_field_name.path "$upload_tmp_path";
        }
        # Pass altered request body to a proxy

        location / {
                root /var/www/dev/source/nginx/media;
        }
}
相关
型号.py

def rename_image(instance,filename):
    random = ''.join([choice(letters) for i in xrange(10)])
    today = datetime.date.today()
    userid = instance.user.username
    filename = '_'.join([today.strftime('%s'),userid,random,filename])
    return'/'.join(['images','users',userid,filename])


class Users(models.Model):
    user        = models.OneToOneField(User)
    ...
    photo       = models.ImageField(upload_to=rename_image)
编辑: 当我尝试将它设置为另一个路径(作为测试由一个名为imgz的目录组成)时,这在nginx错误日志中:(我当时也创建了imgz,以查看是否可以修复它,但它没有)

2012/12/02 09:37:44[错误]31229#0:*56472 open()“/var/www/dev/source/nginx/media/imgz/users/1354424400_lmddkskvkvebrtuybudgzsljioxvywx_gwslfwlbk_me.jpg”失败(2:没有这样的文件或目录),客户端:xx.xx.example.example,服务器:photos.example.com,请求:“GET/imgz/users/1354424400_lmDdkskvEPbrtUYBudgzsLjiOXvywx_gwslfbk_me.jpg HTTP/1.1”,主机:“photos.example.com”,推荐人:“

编辑2:
实际上,这是一个在发布后发生的GET请求。这是Django应用程序试图显示刚刚上传的图像。如果我记得正确,表单的发布几乎总是成功的。如果我更改路径,它只会在/var/www中创建一个不同的路径。

设置其他路径时日志中有任何错误/警告吗?啊!我忘记了一个错误我会告诉你的,谢谢。我也会将它添加到我的帖子中。当我将它设置为/var/www/dev/source/nginx/media/images时,我会得到open()错误,并显示“没有这样的文件或目录”“。显然,我随后创建了目录‘images’,但它仍然会给出相同的错误。因此,图像是否正确上载,它是否确实存在于
var/www/dev/source/nginx/media/…
中?