`
haoningabc
  • 浏览: 1475201 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx带进度条的上传超大文件

阅读更多
11年写的
http://haoningabc.iteye.com/blog/1711534
重新整理下
准备----------------------------------------------

nginx-1.8.1.tar.gz 能过,
  1.10不行,会有openssl md5之类的错误

上传
https://github.com/vkholodkov/nginx-upload-module/tree/2.2
nginx-upload-module-2.2.zip 

上传进度条
https://www.nginx.com/resources/wiki/modules/upload_progress/
使用v0.8.4 的版本
masterzen-nginx-upload-progress-module-v0.8.4-0-g82b35fc.tar.gz

上传进度条客户端:
https://github.com/drogus/jquery-upload-progress



跑php的fcgi
spawn-fcgi-1.6.3.tar.bz2


yum install openssl-devel zlib-devel prce-devel -y
这些 nginx需要用到的

yum install php php-devel -y

安装-----------------------------------------

安装spawn-fcgi
tar xvf spawn-fcgi-1.6.3.tar.bz2
./configure --prefix=/usr/local/spawn
make
make install


启动脚本
runcgi.sh

#
!/bin/sh
export PHP_FCGI_MAX_REQUESTS=0
/usr/local/spawn/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u haoning -g haoning -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid



安装nginx
编译nginx
./configure --prefix=/usr/local/nginx  --add-module=/opt/masterzen-nginx-upload-progress-module-82b35fc --add-module=/opt/nginx-upload-module-2.2 
make
make install


nginx配置文件
worker_processes  1;  
events {  
    worker_connections  1024;  
}  
http {  
    autoindex on;   
    autoindex_exact_size off;   
    autoindex_localtime on;   
    default_type application/octet-stream;   
    sendfile on;   
    tcp_nopush on;  
    tcp_nodelay on;  
    keepalive_timeout 10;  
    gzip on;  
    gzip_min_length 1k;  
    gzip_buffers 4 8k;  
    gzip_http_version 1.1;  
    gzip_comp_level 3;  
    gzip_types text/css text/xml text/plain application/x-javascript application/xml application/pdf application/rtf application/x-perl application/x-tcl application/msword application/vnd.ms-excel application/vnd.ms-powerpoint application/vnd.wap.xhtml+xml image/x-ms-bmp;  
    gzip_vary on;  
    output_buffers 4 32k;  
    upload_progress_json_output;  
    upload_progress proxied 1m;  
    server {  
        listen       80;  
        server_name  192.168.139.114;  
        charset utf-8,gb2312;  
        client_max_body_size 12000m;  
        location /upload {  
                upload_pass   @test;  
                #upload_store /tmp 1; 
		upload_store /tmp;   
                upload_store_access user:r;  
                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 "^submit$|^description$";  
                track_uploads proxied 30s;  
        }     
        location @test {  
                rewrite ^(.*)$  /test.php last;  
        }     
  
        location / {  
            proxy_set_header Host $http_host;  
            root   html;  
            index  index.html index.htm index.php;  
        }  
  
        location ~ (.*)/x-progress-id:(\w*) {  
            rewrite ^(.*)/x-progress-id:(\w*)   $1?X-Progress-ID=$2;  
        }  
        location ^~ /progress {  
            report_uploads proxied;  
        }  
        location ~ \.php$ {   
            fastcgi_pass 127.0.0.1:9000;  
            fastcgi_index index.php;  
            set $path_info "/";  
            set $real_script_name $fastcgi_script_name;  
            if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") { set $real_script_name $1;  
                set $path_info $2;  
            }   
        }   
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {   
            root html;  
            access_log off;  
            expires 30d;  
        }   
        location ~ .*\.(js|css|ico)?$ {   
            root html;  
            access_log off;  
            expires 1h;  
        }   
        error_page 500 502 503 504 /50x.html;  
        location = /50x.html {   
            root html;  
        }   
        fastcgi_param SCRIPT_FILENAME $document_root$real_script_name;  
        fastcgi_param script_name $real_script_name;  
        fastcgi_param path_info $path_info;  
        include /usr/local/nginx/conf/fastcgi_params;   
    }  
  
}


客户端
jquery-upload-progress-master.zip
解压到
/usr/local/nginx/html/
cd  /usr/local/nginx/html/jquery-upload-progress-master/example
vim index.html
<body>
          <form id="upload" enctype="multipart/form-data" action="index.html" method="post">
        <input name="file" type="file"/>
        <input type="submit" value="Upload"/>
      </form>

改成
<body>
          <form id="upload" enctype="multipart/form-data" action="/upload" method="post">
        <input name="file" type="file"/>
        <input type="submit" value="Upload"/>
      </form>

因为nginx配置的/upload

加一个请求返回的php返回值
test.php
<?php  
print_r($_POST);  
?> 




启动
export PHP_FCGI_MAX_REQUESTS=0
/usr/local/spawn/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -u haoning -g haoning -f /usr/bin/php-cgi -P /var/run/fastcgi-php.pid

/usr/local/nginx/sbin/nginx



cd /tmp
watch -n 1  'ls -lh'
查看上传的文件

chmod -R 777 /tmp

浏览器访问
http://192.168.139.122/jquery-upload-progress-master/example/



效果













  • 大小: 5.1 KB
分享到:
评论

相关推荐

    nginx TOMCAT 文件下载 上传 进度条 缓存

    标题 "nginx TOMCAT 文件下载 上传 进度条 缓存" 涉及到的是在Web服务器场景中,如何利用Nginx和Tomcat处理文件的下载、上传以及实现进度条显示和缓存优化的技术点。下面将详细介绍这些内容。 1. **Nginx与Tomcat的...

    Nginx下搭建flv视频服务器且支持视频拖动进度条播放.docx

    从官方网址下载播放器包,将`player.swf`文件上传到服务器,并在网页中使用Object/Embed代码进行嵌入。 完成以上步骤后,用户就能在网页上流畅地观看FLV视频,并且可以随意拖动进度条,享受无缝的视频体验。值得...

    php文件上传进度条集合

    8. **Nginx或Apache模块**:某些服务器软件提供扩展模块,如Nginx的`HttpUploadProgressModule`,可以提供文件上传进度信息,但需要服务器配置支持。 9. **PHP的cURL库**:在cURL中,`curl_multi_info_read`函数...

    uploadify3与struts2结合实现有进度条文件上传实例

    3) 修改服务器端可上传文件大小的限制 在文件 usr local nginx conf nginx conf中修改client max body size 毕竟是第一次用 不是很熟悉 希望有人发现问题可以交流一下"&gt;这是根据uploadify3 2结合struts2搭建的...

    简单编写html文件加载nginx发布的视频,实现在线播放nginx发布的视频

    `nginx.conf`是Nginx的主要配置文件,其中包含了服务器的各项设置。要发布视频,我们需要在该配置文件中添加一个新的location块,指定视频文件所在的目录。例如: ```nginx server { listen 80; server_name ...

    nginx-upload-progress模块源码

    1. **初始化阶段**:当客户端发起文件上传请求时,`nginx-upload-progress` 模块会在内存中创建一个进度条记录,并将其与请求关联起来。 2. **数据传输**:在文件传输过程中,模块会持续更新该记录,包含已上传的...

    php+apc上传进度条

    在文件上传过程中,我们可以在客户端(如JavaScript)发送多次请求,每次请求时,服务器端通过`apc_fetch()`获取当前已上传的文件部分,然后返回给客户端更新进度条。 以下是实现这个功能的一个简单步骤: 1. **...

    nginx_uploadprogress_module-0.9.0

    该模块专门用于在Nginx服务器端实现文件上传的实时进度跟踪,让用户在上传过程中能够看到清晰的进度条,从而减轻用户对长时间等待的焦虑感。 1. **Nginx与UploadProgress Module** Nginx是一款高性能的HTTP和反向...

    上传文件的C#代码

    - 可以结合反向代理服务(如Nginx)进行大文件上传的代理,减轻Web服务器压力。 - 使用HTTPS提供安全的文件传输。 以上就是关于“上传文件的C#代码”的主要知识点,涵盖了从客户端到服务器端的整个流程,以及相关...

    Nginx上传文件全部缓存解决方案

    下面通过文字说明给大家详解Nginx上传文件全部缓存解决方案。 因为应用服务器(Jetty)里面实现了上传时写了进度条。经过缓存。就没法读取到进度了。此外,在Nginx处缓存文件,也降低了传输效率。 nginx采用1.5.6。 ...

    nginx及其安装时依赖的rpm包

    配置Nginx通常涉及编辑`/etc/nginx/nginx.conf`文件,设置虚拟主机、重定向规则等。记得在修改配置后使用`nginx -t`检查配置文件的正确性,并用`systemctl reload nginx`加载新的配置。 Nginx作为反向代理,可以将...

    nginx centos7离线安装包

    7. `nginx-filesystem-1.20.1-10.el7.noarch.rpm`:Nginx的文件系统配置,用于设置Nginx的默认配置和目录结构。 离线安装时,确保所有依赖项都已经包含在内,避免安装过程中出现错误。然而,使用`--nodeps`选项跳过...

    php上传一个大的文件,文件的大小有没有限制.zip

    服务器自身的设置,如Apache或Nginx,可能对文件上传有特定的限制。例如,Apache的`LimitRequestBody`指令控制了可以接收的最大请求体大小,而Nginx的`client_max_body_size`配置项决定了允许上传文件的最大尺寸。...

    android上传文件至服务器提供客户端下载

    4. **进度显示**:为了提供良好的用户体验,可以使用`AsyncTask`或`Worker`类在后台线程上传文件,并在主线程更新进度条。 5. **错误处理**:确保捕获并处理可能发生的异常,例如网络问题、文件读取错误等。 二、...

    DownFile(c#)文件上传

    除了使用内置的ASP.NET控件,还可以利用第三方库,如Nginx的Upload Progress Module、jQuery的File Upload插件等,这些库提供了更高级的功能,如进度条显示、多文件上传等。 8. **文件存储策略**: 文件上传后,...

    基于mangos的websocket协议跨平台文件传输工具

    1. 文件无任何依赖可以编译成linux,window,arm平台都能使用 2. 单文件根据执行参数可以既可以当服务端用也可以当...10. 命令行窗口带进度条显示 11. 基于websocket协议非常容易用nginx反向代理容易实现7层负载均衡

    CentOS7 nginx离线安装gcc/pcre-devel/openssl-devel/zlib-devel包

    在实际操作中,你需要先下载这些依赖包到本地,然后通过FTP、SCP或其他文件传输方式将它们上传到你的CentOS 7服务器。确保将这些.rpm文件放在一个临时目录中,例如 `/tmp/nginx_dependencies`。 一旦所有文件都上传...

    PHP大文件分片上传.rar 亲测ok

    由于服务器和网络条件的限制,一次性上传大文件可能会导致超时或内存溢出的问题。为了解决这个问题,我们可以采用“大文件分片上传”的策略。这个“PHP大文件分片上传.rar 亲测ok”示例就是一种实现方式,它允许我们...

Global site tag (gtag.js) - Google Analytics