网站首页 > 物联资讯 > 技术分享

Nginx的Upload上传模块

2016-09-28 00:00:00 广州睿丰德信息科技有限公司 阅读
睿丰德科技 专注RFID识别技术和条码识别技术与管理软件的集成项目。质量追溯系统、MES系统、金蝶与条码系统对接、用友与条码系统对接

前段时间做一个项目,需要上传文件,差不多需要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 "^.*$"; RFID管理系统集成商 RFID中间件 条码系统中间层 物联网软件集成