Ограничить размер файла загрузки на URL
У меня есть сайт с Play! Framework, который я показываю с NGinx, используя ssl.
Все работает нормально, но я хотел бы установить ограничение на загрузку файлов на основе URL:
- Если пользователь загрузит файл в * / pages / ** (/ pages / или / page / {id} / edit), я ограничу размер до 10Mo (это будет zip-архив)
- Если пользователь загрузит файл в * / images / ** (/ images / или / images / {id} / edit), я ограничу размер до 2Mo (это будут только изображения)
Вот где я застрял:
- Я видел
client_max_body_size
директива, это именно то, что я хочу, но я должен указать для каждого местоположения {}, конфигурации proxy_*? - У меня есть конкретное сообщение для отображения, если пользователь достигает разрешенной квоты, в моем приложении (расположено по адресу /errors/413). Если я использую браузер напрямую, он работает. Но, используя приведенную ниже конфигурацию, я получил " 504 Gateway Time-out ". Зачем?
Вот мой файл конфигурации:
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, директива client_max_body_size может также использоваться в блоке сервера.