传统站点在处理文件上传请求时,普遍使用后端编程语言处理,如:Java、PHP、Python、Ruby等。今天给大家介绍Nginx的一个模块,Upload Module上传模块,此模块的原理是先把用户上传的文件保存到临时文件,然后在交由后台页面处理,并且把文件的原名,上传后的名称,文件类型,文件大小set到页面。 GitHub: https://github.com/vkholodkov/nginx-upload-module/tree/2.2 Site: http://wiki.nginx.org/HttpUploadModule 一、安装模块从GitHub上下载源码解压,进入nginx源码目录,重新./configure并且添加如下参数:
?
如果你想获知此前nginx安装参数可以这样获取:
?
配置过程中,注意查看过程是否出错
?
如果没有什么错直接就make && make install完事 二、配置直接来个样例:
?
以上配置中,仅是一些常用配置,更全的配置请看Nginx Upload Module的site 三、测试我利用实例中的example.php测试处理结果:
连中文名都被识别set过来了 四、一些建议效率对比,此模块是由C语言写的,效率自然不成问题,另外一个有点是不会过多占用后台语言的线程。相比之下,Nginx利用负债均衡的能力处理文件上传上,效率更高。 权限控制,这个确实蛋疼,因为业务代码在nginx.conf里写太多反倒不好维护,但如果不考虑权限的情况下,并且file size 控制的小一点,结合upload_cleanup不会有太大压力。 上传进程,可以结合Nginx的nginx_uploadprogress_module使用 存储位置,甚至可以把临时文件保存到tmpfs中(不过这会有丢失的可能性) (责任编辑:IT) |