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/
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/…
中?