nginx upload progress module

简介

NginxUploadProgressModule是一个可以可以获取文件上传进度的模块,官方文档:HttpUploadProgressModule

原理

nginx作为代理服务,在代理到后端服务之前,将请求内容全部缓存到磁盘上,通过每次上传的一个唯一标识,能够获取当前服务器已经接收的大小。

安装

1.下载模块,通过git或者http,地址:http://github.com/masterzen/nginx-upload-progress-module/tree/master

2.通过add-modue指令编译到nginx中

指令集

upload_progress

语法:upload_progress <zone_name>  <zone_size>;

上下文:http

作用:声名nginx server使用upload progress module,引用名为zone_name,并分配zone_size bytes的空间存放上传状态信息

track_uploads

语法:track_uploads <zone_name> <timeout>;

上下文:location

作用:声名此location使用upload_progress模块记录文件上传,这条指令必须位于location配置的最后。

report_uploads

语法:report_uploads <zone_name>

上下文:location

作用:允许一个location响应上传状态,响应内容默认为一个javascript的new object语句对象,有四种状态

响应:

上传开始(准备中或者请求未到达)

new Object({"state":"starting"})

正在上传

new Object({"state":"uploading","received":<size_received>,"size":<total_size>})

上传完成

new Object({"state":"done"})

上传错误

new Object({"state":"error","status":<error code>})

upload_progress_content_type

语法:upload_progress_content_type <content-type>

上下文:location

作用:状态响应的content-type,默认为test/javascript,即可执行的javascript代码

upload_progress_header

语法:upload_progress_header <progress-id>

上下文:location

作用:修改标识上传ID的参数(header)名,默认为X-Progress-ID

upload_progress_jsonp_parameter

语法:upload_progress_jsonp_parameter <callback_parameter>

上下文:location

作用:修改jsonp形式的callback函数名,默认值为“callback”

upload_progress_json_output

语法:upload_progress_json_output

上下文:location

作用:声名响应输出为json格式

upload_progress_jsonp_output

语法:upload_progress_jsonp_output

上下文:location

作用:声名响应输出为jsonp格式

upload_progress_template

语法:upload_progress_template <state> <template>

上下文:location

作用:使用自定义的模板输出响应

state可选:starting、uploading、error、done

模板中可渲染变量:$uploadprogress_length、$uploadprogress_received、$uploadprogress_status、$uploadprogress_callback

示例

http {
    # reserve 1MB under the name ‘proxied‘ to track uploads
    upload_progress proxied 1m;

    server {
        listen       127.0.0.1 default;
        server_name  localhost;

        root /path/to/root;

        location / {
            # proxy to upstream server
            proxy_pass http://127.0.0.1;
            proxy_redirect default;

            # track uploads in the ‘proxied‘ zone
            # remember connections for 30s after they finished
            track_uploads proxied 30s;
        }

        location ^~ /progress {
            # report uploads tracked in the ‘proxied‘ zone
            report_uploads proxied;
        }
    }
}
时间: 2024-10-21 03:21:58

nginx upload progress module的相关文章

转:使用 Nginx Upload Module 实现上传文件功能

普通网站在实现文件上传功能的时候,一般是使用Python,Java等后端程序实现,比较麻烦.Nginx有一个Upload模块,可以非常简单的实现文件上传功能.此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面.下面和大家具体介绍一下. 一.编译安装Nginx 为了使用Nginx Upload Module,需要编译安装Nginx,将upload module编译进去.upload module的代码可以去Gith

nginx上传模块—nginx upload module-

一. nginx upload module原理 官方文档: http://www.grid.net.ru/nginx/upload.en.html Nginx upload module通过nginx服务来接受用户上传的文件,自动解析请求体中存储的所有文件上传到upload_store指定的目录下.这些文件信息从原始请求体中分离并根据nginx.conf中的配置重新组装好上传参数,交由upload_pass指定的段处理,从而允许处理任意上传文件.每个上传文件中的file字段值被一系列的uplo

Nginx Upload Module 上传模块

传统站点在处理文件上传请求时,普遍使用后端编程语言处理,如:Java.PHP.Python.Ruby等.今天给大家介绍Nginx的一个模块,Upload Module上传模块,此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面. GitHub: https://github.com/vkholodkov/nginx-upload-module/tree/2.2 Site: http://wiki.nginx.or

面试题笔记:实现Nginx Upload 模块 功能上传文件。

linux服务器开发测评题目———————————————————————————— 搭建一个nginx服务器,能完成文件上传功能.主要构成有: <1> 用于测试服务器上传功能用的前端html页面 <2> nginx web服务器,包括了文件上传功能模块,注意配置好配置文件 <3> 对于上传成功的文件,给前端返回upload successfully信息 动手搭建完成后,针对上面的几点要求截几张图,同时把前端html页面,nginx配置文件,和假如需要使用的业务逻辑代码

Nginx - HTTP Configuration, Module Directives

Socket and Host Configuration This set of directives will allow you to configure your virtual hosts. In practice, this materializes by creating server blocks that you identify either by a hostname or by an IP address and port combination. In addition

Nginx - HTTP Configuration, Module Variables

The HTTP Core module introduces a large set of variables that you can use within the value of directives. Be careful though, as only a handful of directives accept variables in the definition of their value. If you insert a variable in the value of a

PHP5.4新特性之上传进度支持Upload progress

在PHP5.4版本当中给我们提供了好用的特性,上传进度的支持,我们可以配合Ajax动态获取SESSION当中的上传进度: 在使用这一特性之前,需要现在php.ini文件当中进行相应的设置: 1 2 3 4 5 6 session.upload_progress.enabled[ = On] :                         是否启用上传进度报告(默认开启) session.upload_progress.cleanup[ = Off] :                    

PHP上传进度支持(Upload progress in sessions)

文件上传进度反馈, 这个需求在当前是越来越普遍, 比如大附件邮件. 在PHP5.4以前, 我们可以通过APC提供的功能来实现. 或者使用PECL扩展uploadprogress来实现. 从PHP的角度来说, 最好的储存这些信息的地方应该是SESSION, 首先它是PHP原生支持的机制. 其次, 它可以被配置到存放到任何地方(支持多机共享). 这个新特性, 提供了一些新的INI配置, 他们和APC的相关配置很类似: session.upload_progress.enabled[=1] : 是否启

FastDFS + Nginx module

前言 新项目使用FastDFS 已经有一段时间了,最近又与Nginx 做了结合.趁有时间,做下整理. 需求 使用FastDFS 存储资源(图片.文档.音频.视频...)文件,使用Nginx 提供资源请求服务. PS:FastDFS特别适合大中型网站使用,所以这里选型时一定要注意.不是说小型不适用,而是一定要想清楚,是否一上来就有必要使用DFS这类应用.对于中小型网站,使用本地文件系统.NFS或Samba,就可以很好的解决此类需求. 网站的架构是随着业务增长而演变的,而非一蹴而就. 具体还是需要根