根据url限制文件大小上传

我有一个网站build立与玩! 我使用ssl与NGinx一起展示的框架 。

一切工作正常,但我想实现基于URL的file upload限制:

  • 如果用户上传文件到* / pages / **( / pages // page / {id} / edit ),我将限制到10Mo (这将是zip压缩文件)
  • 如果用户上传一个文件到* / images / **( / images // images / {id} / edit ),我会将大小限制为2Mo (只会是图片)

这里是我卡住的地方:

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

这是我的configuration文件:

 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; } } 

非常感谢您的帮助 ! 🙂

请参阅Nginx文档 client_max_body_size指令也可以在服务器模块中使用。