• 使用nginx-upload-module搭建文件上传服务器


    1. nginx文件版本及系统环境

    nginx 1.17.3
    nginx-upload-module 2.3.0
    系统 centos7

     

     

     2. 文件下载 

     nginx和nginx-upload-module

    1)原生的nginx没有upload-module,需要重新编译nginx,添加nginx-upload-module

    2)  nginx下载 http://nginx.org/en/download.html,下载最新版

    3)nginx-upload-module下载 https://github.com/fdintino/nginx-upload-module/releases,下载最新版

    3. 编译

    1)将nginx和nginx-upload-module放在解压到/home的目录下

    2)在nginx目录下,运行nginx的配置脚本

    ./configure --prefix=/home/software/nginx --sbin-path=/home/software/nginx/sbin/nginx --conf-path=/home/software/nginx/conf/nginx.conf  --with-http_ssl_module --with-http_stub_status_module --add-module=./nginx-upload-module-2.3.0

    3)在nginx目录下,安装 make & make install, 完成nginx带上传模块的安装。本次安装时采用了绝对路径,如果需要相对路径自行修改--sbin-path和--conf-path即可。

    4. nginx upload配置

     

    server {
            client_max_body_size 100m;
            listen       8077; 
                # Upload form should be submitted to this location
            location /file/ {  
                # Pass altered request body to this location
                upload_pass @fileserver_backend;
                upload_pass_args on;
                # Store files to this directory
                # The directory is hashed, subdirectories 0 1 2 3 4 5 6 7 8 9 should exist
                upload_store /home/software/nginx/tmp-file 1; 
                # Allow uploaded files to be read only by user
                upload_store_access user:rw group:rw all:r;
                # 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 size of a file
                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 "^.*";                                                     
                upload_limit_rate 0;
                upload_cleanup 400-599;
            }
            # Pass altered request body to a backend
            location @fileserver_backend {
                 proxy_pass http://127.0.0.1:2230; 
            }
        }   

    nginx upload上传的文件会以临时文件的方式存在路劲(/home/software/nginx/tmp-file)中,文件名是文件上传的顺序编号,不带文件后缀。其中关于文件的信息会作为参数传到 fileserver_backend 后续处理程序中,后续程序可以使用多种方式实现,本文提供一种java接口的方式。

    5. nginx后续处理程序接口

     @RequestMapping(value = "/file/", method = RequestMethod.POST)
        public ResponseEntity fileRenameAndSave(HttpServletRequest request){
            /**
             * 略
             */
            return ResponseEntity.status(HttpStatus.OK).body("");
        }

    至此,nginx linux版上传模块的功能介绍完。nginx windows版上传模块编译包可在 https://download.csdn.net/download/Lpig900911/12287434 下载。

     

  • 相关阅读:
    [原]Jenkins(七)---jenkins项目编译测试发布由maven构建的web项目
    [原]jenkins(六)---jenkins远程部署脚本
    [原]jenkins(五)---jenkins添加项目
    [原]Jenkins(四)---Jenkins添加密钥对
    [原]Jenkins(三)---Jenkins初始配置和插件配置
    [原]Jenkins(二)---jenkins之Git+maven+jdk+tomcat
    mysql给root开启远程访问权限
    [原]git的使用(六)---远程仓库
    [原]git的使用(五)---删除文件
    [原]git的使用(四)---撤销修改
  • 原文地址:https://www.cnblogs.com/smzy/p/11401240.html
Copyright © 2020-2023  润新知