上次写了一篇nginx+php-fpm优化上传,一位博友留言介绍了,第三方nginx upload module

  1. http://www.grid.net.ru/nginx/upload.en.html

看了一下,功能蛮强大的,所以就记录下来·基本没什么变化,在原有的例子上稍加了下修改,加了一个限速功能。在 0.8.X 版本上编译出出错,他官方也有写:

  1. For nginx versions other than 0.7.44-51

但是我在最新版本 nginx-0.7.67.tar.gz 编译也没问题。 下载nginx:wget http://www.nginx.org/download/nginx-0.7.67.tar.gz 下载模块:wget http://www.grid.net.ru/nginx/download/nginx_upload_module-2.0.12.tar.gz 1.下载编译安装nginx_upload_module

  1. nginx $> tar zxvf nginx-0.7.67.tar.gz
  2. nginx $> tar zxvf nginx_upload_module-2.0.12.tar.gz
  3. nginx $> cd nginx-0.7.67
  4. #关掉不需要的模块,节省资源开支俗话说越简洁越稳定~
  5. nginx $> ./configure --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_ssl_module --without-http_memcached_module --without-http_empty_gif_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --add-module=/root/nginx_upload_module-2.0.12
  6. nginx $> make
  7. nginx $> make install

2.创建配置文件:

  1. nginx $> cd /usr/local/nginx/conf
  1. nginx $> vim nginx.conf
  2. user www www;
  3. worker_processes 1;
  4.  
  5. error_log logs/error.log notice;
  6. pid logs/nginx.pid;
  7.  
  8. working_directory /usr/local/nginx;
  9.  
  10. worker_rlimit_nofile 65535;
  11. events {
  12. use epoll;
  13. worker_connections 1024;
  14. }
  15.  
  16. http {
  17. include mime.types;
  18. default_type application/octet-stream;
  19. client_max_body_size 1024m;
  20. server {
  21. listen 80;
  22. server_name 192.168.6.162;
  23. index index.html index.htm index.php;
  24. root /var/www;
  25.  
  26. # Upload form should be submitted to this location
  27. location /upload {
  28. # Pass altered request body to this location
  29. upload_pass /upload.php;
  30.  
  31. # Store files to this directory
  32. # The directory is hashed, subdirectories 0 1 2 3 4 5 6 7 8 9 should exist
  33. upload_store /var/www/webdata;
  34.  
  35. # Allow uploaded files to be read only by user
  36. upload_store_access user:r;
  37. # 限制上传速度
  38. upload_limit_rate 128k;
  39.  
  40. # Set specified fields in request body
  41. upload_set_form_field "${upload_field_name}_name" $upload_file_name;
  42. upload_set_form_field "${upload_field_name}_content_type" $upload_content_type;
  43. upload_set_form_field "${upload_field_name}_path" $upload_tmp_path;
  44.  
  45. # Inform backend about hash and size of a file
  46. upload_aggregate_form_field "${upload_field_name}_md5" $upload_file_md5;
  47. upload_aggregate_form_field "${upload_field_name}_size" $upload_file_size;
  48.  
  49. upload_pass_form_field "^submit$|^description$";
  50. }
  51.  
  52. # Pass altered request body to a backend
  53. location ~ \.php {
  54. fastcgi_pass 127.0.0.1:9000;
  55. fastcgi_index index.php;
  56. include fastcgi.conf;
  57. }
  58. }
  59. }

3.创建测试代码

  1. nginx $> cd /var/www
  2. nginx $> mkdir webdata
  3. nginx $> chown www.www webdata
  1. nginx $> vim upload.php
  2. < ?php
  3. echo "REQUEST :";
  4. echo "Upload: " . $_REQUEST["file_name"] . "";
  5. echo "Type: " . $_REQUEST["file_content_type"] . "";
  6. echo "path: " . $_REQUEST["file_path"] . "";
  7. echo "MD5 " . $_REQUEST["file_md5"] . "";
  8. echo "Size: " . ($_REQUEST["file_size"] / 1024) . "";
  9.  
  10. echo "_POST:";
  11. echo "Name : " . $_POST["file_name"] . "";
  12. echo "Type : " . $_POST["file_content_type"] . "";
  13. echo "Path : " . $_POST["file_path"] . "";
  14. echo "MD5 : " . $_POST["file_md5"] . "";
  15. echo "Size : " . ($_POST["file_size"] / 1024) . "Kb";
  16. ?>
  1. nginx $> vim upload.html
  2. <html>
  3. <body>
  4. <h2>Select files to upload</h2>
  5. <form name="upload" enctype="multipart/form-data" action="/upload" method="post">
  6. <input type="file" name="file"/><br />
  7. <input type="submit" name="submit" value="Upload"/>
  8. <input type="hidden" name="test" value="value"/>
  9. </form>
  10. </body>
  11. </html>

4.测试:  PS:不太熟悉 wordpress 下如何显示html代码·很多代码都被隐藏不显示,html 代码部分显示不全。

from:http://deidara.blog.51cto.com/400447/389873

再次优化NGINX+php-fpm上传的更多相关文章

  1. Nginx的Upload上传模块

    前段时间做一个项目,需要上传文件,差不多需要20M左右,普通用php处理会比较麻烦,经常超时,而且大量占用资源.于是搜索了下,决定用nginx的upload上传模块来处理. 你可以在这里:http:/ ...

  2. h5 + nginx + php 视频上传之突破文件大小受限的解决办法

    一.环境: CentOS 6.8 nginx 1.8.0 php 7.0.10 二.背景 基于 nginx + php 的 h5 项目,上传视频的时候,如果视频太大,会上传失败. 三.正文 一份视频传 ...

  3. Nginx反向代理上传大文件报错(failed to load resource : net :: ERR_CONNECTION_RESET)

    转自: https://blog.csdn.net/kinginblue/article/details/50753271?locationNum=14&fps=1 Nginx反向代理上传大文 ...

  4. nginx代理图片上传以及访问

    nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller @Post ...

  5. nginx实现文件上传和下载

    nginx实现文件上传和下载 发布时间:2020-06-05 16:45:27 来源:亿速云 阅读:156 作者:Leah 栏目:系统运维 这篇文章给大家分享的是nginx实现文件上传和下载的方法.小 ...

  6. nginx代理图片上传以及访问 nginx 图片上传完整版

    nginx代理图片上传 首先需要利用nginx代理图片访问参考 https://www.cnblogs.com/TJ21/p/12609017.html 编写接受文件的controller 1 @Po ...

  7. 分布式文件系统 - FastDFS 配置 Nginx 模块及上传测试

    也不说废话,直接干 上一篇 分布式文件系统 - FastDFS 在 CentOS 下配置安装部署 中安装了 FastDFS 后,并配置启动了 Tracker 和 Storage 服务,已经可以上传文件 ...

  8. [svc]nginx限制客户端上传附件的大小

    300 行 python 代码的轻量级 HTTPServer 实现文件上传下载 系统环境 [root@n1 conf]# cat /etc/redhat-release CentOS Linux re ...

  9. 让nginx支持文件上传的几种模式

    文件上传的几种不同语言和不同方法的总结. 第一种模式 : PHP 语言来处理 这个模式比较简单, 用的人也是最多的, 类似的还有用 .net 来实现, jsp来实现, 都是处理表单.只有语言的差别, ...

随机推荐

  1. MVC 过滤

    我们来看两个接口: public interface IActionFilter { // Methods void OnActionExecuted(ActionExecutedContext fi ...

  2. 你真的会玩SQL吗?透视转换

    原文:你真的会玩SQL吗?透视转换 透视转换是一种行列互转的技术,在转过程中可能执行聚合操作,应用非常广泛. 本章与 你真的会玩SQL吗?数据聚合 内容比较重要,还涉及到 你真的会玩SQL吗?Case ...

  3. SVN客户端--TortoiseSVN使用说明(转)

    TortoiseSVN是windows下其中一个非常优秀的SVN客户端工具.通过使用它,我们可以可视化的管理我们的版本库.不过由于它只是一个客户端,所以它不能对版本库进行权限管理. TortoiseS ...

  4. 剑指offer-面试题15.链表中倒数第k个结点

    题目:输入一个链表,输出该链表的倒数第K个结点.为了符合大多数人的习惯,本题 从1开始计数,即链表的尾结点是倒数第1个节点.例如有一个链表有6个节点,从 头节点开始他们的值依次是1,2,3,4,5,6 ...

  5. canvas arcTo()用法详解 – CodePlayer

    canvas arcTo()用法详解 – CodePlayer canvas arcTo()用法详解

  6. Struts2 学习笔记 10 Result部分 part1

    1.关于Result我们首先来学习一下结果类型 result type. 先来看struts.xml. struts.xml <?xml version="1.0" enco ...

  7. HBase 5、Phoenix使用

    1.建表 执行建表语句 $ . ../examples/stock_symbol.sql 其中../examples/stock_symbol.sql是建表的sql语句 CREATE TABLE IF ...

  8. SQL Server 中使用参数化Top语句

    在T-Sql中,一般top数据不确定的情况下,都是拼sql,这样无论是效率还是可读性都不好.应该使用下面参数化Top方式:declare @TopCount int set @TopCount = 1 ...

  9. Unity 调用android插件

    1. Unity的Bundle Identifier必须和你的android报名一致 Activity和View的区别: Activity应该是一个展示页面,View是页面上一些按钮视图等等. 如何调 ...

  10. 在线CRC校验

    在线CRC校验: http://www.lammertbies.nl/comm/info/crc-calculation.html