添加nginx-upload-module模块

本文介绍了一种使用nginx-upload-module实现Nginx环境下大文件上传并跟踪上传进度的方法。由于PHP官方提供的上传进度支持不适用于Nginx+PHP via FastCGI的配置,因此本文提供了详细的步骤来编译和安装nginx-upload-module,并解决了编译过程中遇到的问题。

为什么?

因为显示上传进度的需要。而PHP官方的进度支持不适用于Nginx+PHP via FastCGI。相关文章请参考使用Session来跟踪上传进度。该文最后的Warning表示Nginx会自己处理上传,而PHP就只能得到一个最终结果,不能跟踪过程。最后一个跟帖(来自s.zarges)也给出相同的警告。这样,就不得不找别的办法,比如APC之类。而我选择了nginx-upload-module。


关于nginx-upload-module

这个模块由vkholodkov于5年前开发,现在已经不更新N久了。其源代码位于:https://github.com/vkholodkov/nginx-upload-module/tree/2.2。这是文档。直接下载源代码

下载完成后,解压:

tar xvfz nginx_upload_module-2.0.11.tar.gz

需要打补丁

代码恒久远,八哥永流传。多少年过去了,许多代码变得面目全非,许多更失去了本来面目,只剩下那一砣砣的八哥,提醒我们曾经辉煌的过往。现在的Nginx相对5年前,已经修改了很多东西,比如ngx_http_read_request_body_t已经删除了to_write成员,而该成员被nginx-upload-module所需要。其结果就是nginx-upload-module无法编译。关于该问题的讨论请参考这个链接。我们要感谢这个哥们:davromaniak,他修改了nginx-upload-module,修正了错误,使之可以通过编译。这是他的关于该问题修正的博文。我们要做的就是下载他的修改,给nginx-upload-module打补丁。

下载的Patch文件名为 davromaniak.txt。

打补丁使用以下命令:

cp darvromaniak.txt [nginx_upload_module所在目录]  
patch ngx_http_upload_module.c davromaniak.txt

将模块编译进Nginx

先从这个链接下载Nginx源码。然后编译:

cd nginx-1.5.8  

./configure --add-module=[nginx_upload_module所在目录]  
make  
make install
在短暂的等待后,编译和安装就完成了,可以重启Nginx。

遇到的问题:

我使用了比较旧的nginx-upload-module(2.0),如果你使用的是新的2.2,遇到什么问题,请自行解决。

转载于:https://my.oschina.net/mickelfeng/blog/374385

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值