配置 nginx 以重定向文件太大 (413)
Posted
技术标签:
【中文标题】配置 nginx 以重定向文件太大 (413)【英文标题】:configure nginx to redirect on file too big (413) 【发布时间】:2015-09-07 02:37:46 【问题描述】:我的环境: - 使用 Symfony 2 运行的后端应用程序 - nginx 1.8.0 - Centos 6.5 - php-fpm
这是我的 nginx 配置文件:
server
listen 443;
server_name demo.example.com;
root /usr/share/nginx/html/crowdfunding/web;
ssl on;
ssl_certificate /etc/nginx/ssl/xxxxx.crt;
ssl_certificate_key /etc/nginx/ssl/xxxxx.key;
recursive_error_pages off;
error_page 413 = $uri/413;
error_log /var/log/nginx/example_error.log;
access_log /var/log/nginx/example_access.log;
location /
try_files $uri /app.php$is_args$args;
# PROD
location ~ ^/app\.php(/|$)
internal;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param HTTPS on;
fastcgi_intercept_errors on;
我有一个带有上传文件输入的页面:http://demo.example.com/fr/member/edit 我想要这张图片的最大尺寸是 500ko 当我尝试上传 2Mo 文件时,我的错误文件中出现此错误“客户端打算发送太大的正文” 然后你可以在网络浏览器角落看到上传正在运行,当它达到 100% 时重定向到 demo.example.com/fr/member/edit 并重启上传...直到nginx提示错误(可能是关于时间进程)
我想要什么: 当 nginx 检测到:“客户端打算发送太大的正文”然后停止上传文件并重定向到http://demo.example.com/fr/member/edit/413(这是应该进入#prod的路由) 我只想使用 nginx 将 413 重定向到我的应用程序的其他页面
感谢您的帮助,如果您需要更多信息,请询问我。
更新 1: 这是我的 symfony 2 表单
$builder->add('image', 'file', array('label' => 'general.image', 'required' => false, 'constraints' => array(
new File(array(
'maxSize' => '500k',
'mimeTypes' => array(
'image/png',
'image/jpeg',
'image/pjpeg',
'image/gif',
'image/bmp',
)
))
)));
更新 2: 在我的 php.ini 中,我设置了这个:
upload_max_filesize = 500k
post_max_size = 500k
【问题讨论】:
这似乎是一个 PHP 众所周知的问题。看看这个问题:http://***.com/questions/2133652/how-to-gracefully-handle-files-that-exceed-phps-post-max-size 我认为这个解决方案不会停止上传文件,或者我不明白。 【参考方案1】:尝试将以下行添加到 http 或您的案例服务器部分
client_max_body_size 2M;
不要忘记调整您的限制。保存文件,realod nginx,它应该可以工作了。
【讨论】:
以上是关于配置 nginx 以重定向文件太大 (413)的主要内容,如果未能解决你的问题,请参考以下文章
解决 413 Request Entity Too Large(请求实体太大)
Nginx 413 Request Entity Too Large