限制每个 URL 上传的文件大小

限制每个 URL 上传的文件大小

我有一个网站建立玩!框架我使用 NGinx 和 ssl 来展示。

一切正常,但我想根据 url 实现文件上传限制:

  • 如果用户上传文件到 */pages/** (/页/或者/页面/{id}/编辑),我将限制大小为10月(它将是 zip 档案)
  • 如果用户上传文件到 */images/** (/图片/或者/图片/{id}/编辑),我将限制大小为2月(仅限图像)

这就是我陷入困境的地方:

  1. 我看到了client_max_body_size指令,这正是我想要的,但是我是否必须为每个位置{}指定proxy_*配置?
  2. 如果用户达到允许的配额,我会在我的应用程序中显示一条特定消息(位于 /errors/413)。如果我直接使用浏览器,它可以正常工作。但使用下面的配置,我得到了一个“504网关超时“。 为什么?

这是我的配置文件:

server {
    listen    443;

    server_name www.mywebsite.com;

    access_log  /var/log/nginx/mywebsite_access.log;
    error_log   /var/log/nginx/mywebsite_error.log;

    ssl  on;
    ssl_certificate  /etc/nginx/ssl/cert.pem;
    ssl_certificate_key  /etc/nginx/ssl/cert.key;
    ssl_session_timeout  5m;

    ssl_protocols  SSLv3 TLSv1;

    ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP:!kEDH;
    ssl_prefer_server_ciphers   on;

    location / {
        proxy_pass         http://127.0.0.1:9010;
        proxy_redirect     off;

        client_max_body_size 2m;
        error_page         413 =200 /errors/413;

        proxy_set_header   X-Real-IP          $remote_addr;
        proxy_set_header   Host               $host;
        proxy_set_header   X-Forwarded-Ssl    on;
        proxy_set_header   X-Forwarded-For    $proxy_add_x_forwarded_for;
    }
}

非常感谢您的帮助 ! :)

答案1

请参阅Nginx 文档客户端最大主体大小指令也可以在服务器块中使用。

相关内容