Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1734760
  • 博文数量: 391
  • 博客积分: 8464
  • 博客等级: 中将
  • 技术积分: 4589
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-13 15:12
个人简介

狮子的雄心,骆驼的耐力,孩子的执著!

文章分类

全部博文(391)

文章存档

2023年(4)

2018年(9)

2017年(13)

2016年(18)

2014年(7)

2013年(29)

2012年(61)

2011年(49)

2010年(84)

2009年(95)

2008年(22)

分类: 系统运维

2012-04-23 16:55:51

Nginx提供了NginxHttpUploadProgressModule模块,用来处理文件上传的进度

它不是nginx内置的模块,编译时需要加上一下选项

–add-module=../nginx_uploadprogress_module

配置内容:

#开启上传进度,使用8M空间存储每个连接的进度信息

upload_progress proxied 8m;

#以/upload开头的为上传url

location ^~ /upload

{

#设置body最大值为100m

client_max_body_size 100m;

proxy_pass

#此url需要跟踪进度信息,该信息在上传完成后会保留30秒

track_uploads proxied 30s;

}

location ^~ /att/progress {

#此url来获取进度信息

report_uploads proxied;

}

在使用该模块时,一点需要注意以下问题:

  1. track_uploads必须是location中最后一个指令,比如:它必须要放在proxy_pass的后边
  2. 如果通过X-Progress-ID的get参数来获取进度信息,则它必须是url中最后一个参数,如:/progress?user=test&X-Progress-ID=123456
  3. 必须设置client_max_body_size,它的值需要大于单次上传的最大值
  4. 当nginx用作前端的proxy时,它默认会把当前request body的值给缓存到client_body_buffer_size或临时文件中,当client完成上传后,nginx才会把文件给push到后端的server,所以,没有办法从后端的服务器上来获得正确的进度信息,必须在前端的nginx上来配置upload选项

其它 nginx_upload_module : http://blog.haohtml.com/archives/9277

阅读(1933) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~