Nginx   发布时间:2022-05-11  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了php – 使用nginx防止大文件上传大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

使用Nginx作为Web服务器来服务我的网站.
我向我的用户提供上传功能(他们可以提交高达5Mb的图片)所以我有指令:client_max_body_size 5M;在我的服务器配置中.
我注意到的是,如果我尝试上传任何文件,网络服务器不会阻止上传更大的文件.例如,假设我尝试上传700Mb的真正大视频(电影).服务器不会立即拒绝上传,但它会缓冲整个数据(花费这么长时间并减慢服务器速度),并且只有在上传结束时它才会返回413 request实体太大的错误.

所以问题是:当传输的数据开始克服我的client_max_body_size限制时,有没有办法正确配置Nginx来阻止大文件上传?

我认为用我的实际设置继续制作是非常不安全的,我无法在谷歌上找到任何有用的东西.

编辑:

我使用php和Symfony2作为后端……

编辑(再次):

这是我的error.log中出现的内容:

2013/01/28 11:14:11 [error] 11328#0: *37 client intended to send too large body: 725207449 bytes,client: 33.33.33.1,server: www.local.example.com,request: "POST /app_dev.php/api/image/add/byuploader http/1.1",host: "local.example.com",referrer: "http://local.example.com/app_dev.php/"`

奇怪的是我用tail -f error.log监视我的Nginx error.log,并在上传开始时(在它结束之前)立即显示消息.因此Nginx会进行某种预防性检查,但它不会停止/分块上传请求……

我还试图验证php是否通过发出echo’something’来控制上传;死();在页面上谁处理上传但它没有打印任何东西,并没有停止上传请求.所以它应该是Nginx或一些php内部使整个上传继续,直到它完全传输…

另一个编辑:
这是我的顶级视图(监视Nginx和php)正在进行大文件上传(Nginx过载):

编辑:
这是我的Nginx配置

server {
    listen   80;
    server_name www.local.example.com local.example.com;
    access_log /vagrant/logs/example.com/access.log;
    error_log /vagrant/logs/example.com/error.log;
    root   /vagrant/example.com/web;
    index app.php;
    client_max_body_size 6M;

    LOCATIOn /phpR_621_11845@yadmin {
        root /usr/share;
        index index.php;
        LOCATIOn ~* \.php {
            fastcgi_intercept_errors on;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_split_path_info ^(.+\.php)(/.*)$;
            include fastcgi_params;
            fastcgi_param  SCRIPT_FIL@R_874_8371@    $document_root$fastcgi_script_name;
            fastcgi_param  httpS              off;
        }
    }

    LOCATIOn / {
        try_files $uri @rewriteapp;
    }

    LOCATIOn @rewriteapp {
        rewrite ^(.*)$/app.php/$1 last;
    }

    # pass the php scripts to FastCGI server listening on 127.0.0.1:9000
    LOCATIOn ~ ^/(app|app_dev)\.php(/|$) {
        fastcgi_intercept_errors on;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        include fastcgi_params;
        fastcgi_param  SCRIPT_FIL@R_874_8371@    $document_root$fastcgi_script_name;
        fastcgi_param  httpS              off;
    }
}
最佳答案
有用信息:https://stackoverflow.com/questions/4947107/nginx-upload-client-max-body-size-issue

我引用了一些最有趣的答案(就我而言):

如果是这样,它只是一个浏览器问题,不会影响(重载)我的Web服务器.它似乎抱怨我的内存检查表明,在上传大型(700mb)文件时,Nginx和php-fastcgi都没有真正超载.

我可以通过多种方式解决浏览器问题,例如:

>添加< input="" type="“hidden”name" =“max_file_size”value="“5242880”/">在我的形式
>使用自定义413 Nginx错误页面

大佬总结

以上是大佬教程为你收集整理的php – 使用nginx防止大文件上传全部内容,希望文章能够帮你解决php – 使用nginx防止大文件上传所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: