配置 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(请求实体太大)

413 请求实体太大 - 文件上传问题

Nginx 413 Request Entity Too Large

413 Request Entity Too Large(请求实体太大)

413 请求实体太大 nginx django

413 请求实体在 Nginx 和 Amazon ElasticBeanstalk 中太大