防止php 上传失败,php – 使用nginx防止大文件上传

博主遇到一个问题,即Nginx在配置了client_max_body_size限制后,仍然允许大文件上传并缓冲整个文件,直到上传完成后返回413错误。他们希望在上传开始时就能阻止超出限制的文件。配置中提到client_max_body_size为5M,但尝试上传700Mb的文件时,Nginx并未立即阻止。错误日志显示了上传大小,但没有提供解决方案。PHP和Symfony2作为后端。
摘要由CSDN通过智能技术生成

我使用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 /PHPmyadmin {

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_FILENAME $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_FILENAME $document_root$fastcgi_script_name;

fastcgi_param HTTPS off;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值