Nginx的Upload上传模块

前段时间做一个项目,需要上传文件,差不多需要20M左右,普通用php处理会比较麻烦,经常超时,而且大量占用资源。于是搜索了下,决定用nginx的upload上传模块来处理。

你可以在这里:http://www.grid.net.ru/nginx/upload.en.html 获取源码。下载以后需要重新编译nginx


1

2

3

./configure –add-module=/usr/local/nginx_upload_module-*

make

make install

重启nginx即可
以下是我的nginx配置文件

前端页面提交的时候直接提交到 http://test.local/upload 即可


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

server

{

        listen 80;

        server_name test.local;

        index index.php index.shtml index.htm index.html;

        root  /data/app/test.local/wwwroot;

        access_log  off;

 

        location /upload {

                upload_pass     /index.php?c=uploader&a=upload_server;

                upload_cleanup 400 404 499 500-505;

                upload_store    /data/app/test.local/upload_tmp;

                upload_store_access user:r;

                upload_limit_rate 128k;

                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;

                upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;

                upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;

                upload_pass_form_field "^.*$";

        }

 

        location ~ .*\.php?$

        {

                include fastcgi_params;

        }

 

        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {

                expires      30d;

        }

 

        location ~ .*\.(js|css)?$ {

                expires      1d;

        }

 

}

大概解释一下每个参数


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

upload_pass 指明了需要后续处理的php地址

 

upload_cleanup 如果php出现400 404 499 500-505之类的错误,则删除上传的文件

 

upload_store 上传文件存放地址

 

upload_store_access 上传文件的访问权限,user:r是指用户可读

 

upload_limit_rate 上传限速,如果设置为0则表示不限制

 

upload_set_form_field 设定额外的表单字段。这里有几个可用的变量:

$upload_file_name 文件原始名字

$upload_field_name 表单的name值

$upload_content_type 文件的类型

$upload_tmp_path 文件上传后的地址

 

upload_aggregate_form_field 额外的变量,在上传成功后生成

$upload_file_md5 文件的MD5校验值

$upload_file_size 文件大小

 

upload_pass_form_field 从表单原样转到后端的参数,可以正则表达式表示

官方的例子是upload_pass_form_field "^submit$|^description$";意思是把submit,description这两个字段也原样通过upload_pass传递到后端php处理。如果希望把所有的表单字段都传给后端可以用upload_pass_form_field "^.*$";

时间: 2024-11-11 00:03:59

Nginx的Upload上传模块的相关文章

Nginx中nginx_upload_module上传模块安装配置

安装nginx_upload_module模块    代码如下 复制代码 ./configure –add-module=/usr/local/nginx_upload_module-* make make install 重启nginx即可 以下是我的nginx配置文件 前端页面提交的时候直接提交到 http://dev.local/upload 即可  代码如下 复制代码 server { listen 80; server_name test.local; index index.php

nginx上传模块nginx_upload_module和nginx_uploadprogress_module模块进度显示,如何传递GET参数等。

ownload:http://www.grid.net.ru/nginx/download/nginx_upload_module-2.2.0.tar.gzconfigure and make : ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module   --add-module=/data/software/lnmp1.

nginx上传模块—nginx upload module

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

解决nginx上传模块nginx_upload_module传递GET参数

解决nginx上传模块nginx_upload_module传递GET参数的方法总结   最近用户反映我们的系统只能上传50M大小的文件, 希望能够支持上传更大的文件. 很显然PHP无法轻易实现大文件上传, 因为会有各种各样的郁闷问题, 比如服务器超时等, 那么如何解决呢? 我想到了nginx_upload_module!!! 如何安装nginx_upload_module? 请看这里:nginx_upload_module安装使用教程 解决了大文件上传之后又遇到了新问题, 我们希望通过ngin

nginx上传模块nginx_upload_module安装与使用教程

一.nginx_upload_module使用背景 利用nginx上传模块Nginx_upload_module可更有效实现大文件断点续传,还可安装nginx-upload-progress-module扩展显示文件上传进度. 二.nginx_upload_module工作原理 Nginx_upload_module通过nginx服务来接受用户上传的文件,自动解析请求体中存储的所有文件上传到upload_store指定的目录下.这些文件信息从原始请求体中分离并根据nginx.conf中的配置重新

nginx安装文件上传ngx

  ngx_upload模块是nginx中一个文件上传模式了,下面我们来看看nginx安装文件上传ngx_upload模块步骤,希望例子对各位有帮助. 安装nginx,并加入nginx upload module和nginx cache purge module: mkdir ~/download cd ~/download wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.0.12.tar.gz tar zxf n

《JavaScript设计模式》——第11章 牛郎织女——代理模式 11.1无法获取图片上传模块数据

第11章 牛郎织女--代理模式 代理模式(Proxy):由于一个对象不能直接引用另一个对象,所以需要通过代理对象在这两个对象之间起到中介的作用. 由于用户相册模块上传的照片量越来越大,导致服务器端需要将图片上传模块重新部署到另外一个域(可理解为另一台服务器)中,这样对于前端来说,用户上传图片的请求路径发生变化,指向其他服务器,这就导致跨域问题. 11.1 无法获取图片上传模块数据 "小铭,你帮我看看,为什么我向咱们图片上传模块所在的服务器发送的请求,得不到数据呢?"小白问小铭. //

java编程小说上传-java语言编程小说的上传模块不会做了,请指点

问题描述 java语言编程小说的上传模块不会做了,请指点 用java语言在编程小说的上传功能出现了问题,还请问下一步咋搞? 解决方案 报错的是什么部分错误代码帖出来,上传可以找些io方面的看看 解决方案二: 错误的地方会有信息,可以看看 解决方案三: novel没定义,还是外面定义好了,没传参进来?

C# 通用文件上传模块该怎么写?想写个没思路

问题描述 最近要做个通用的上传模块把文件上传到服务器!但是上传服务器要服务的吧,一时之间没什么头绪.哪位大神能指点下啊小弟感激不尽啊 解决方案 本帖最后由 gongyq_627 于 2011-06-02 09:28:06 编辑解决方案二:但是上传服务器要服务的吧?不明白你的意思文件上传本没什么复杂的,想要比较好的效果可以考虑使用第三方插件,比如基于Jquery的js插件:Uploadify--解决方案三:usingSystem;usingSystem.Collections.Generic;us