benzhou 发表于 2018-11-16 13:40:42

nginx-upload模块介绍

最近了解了一下Nginx的upload module功能蛮强大,记录了下来。  nginx-upload-prgress下载地址:http://wiki.nginx.org/NginxHttpUploadProgressModule
  nginx-upload-module下载地址及相关说明:http://www.grid.net.ru/nginx/upload.en.html
  配置Nginx如下,部分如下
  server
  {
  listen       80;
  server_name web.test.com;
  index index.html index.htm;
  root /data/html/www;
  if ($host = 'test.com' )
  {
  rewrite ^/(.*)$ http://web.test.com/$1 permanent;
  }
  if (-d $request_filename)
  {
  rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
  }
  # Upload form should be submitted to this location
  location /upload {
  # 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;

  # Inform backend about hash and>  upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;
  upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;
  upload_pass /test ;
  upload_pass_args on;
  upload_limit_rate 128k;
  upload_store /data/html/www/source/image/sourceImage;
  upload_store_access user:r;
  upload_pass_form_field "^.*$";
  upload_cleanup 400 404 499 500-505;
  }
  location /test {
  proxy_pass   http://localhost:10000/image/upload;
  }

  # Pass>  location ~ .*\.php {
  #fastcgi_passunix:/tmp/php-cgi.sock;
  fastcgi_pass127.0.0.1:9000;
  fastcgi_index index.php;
  include fcgi.conf;
  }
  }
  大概解释一下每个参数
  upload_pass 指明了需要后续处理的地址
  upload_cleanup 如果出现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传递到后端处理。如果希望把所有的表单字段都传给后端可以用upload_pass_form_field "^.*$";

页: [1]
查看完整版本: nginx-upload模块介绍