Как проверить размер загружаемого файла в Nginx?
Как увеличить допустимы размер я знаю:
/etc/nginx/nginx.conf
http {
#...
client_max_body_size 30m;
#...
}
А вот как сделать редирект самим Nginx на страницу при больших отправленных данных - не знаю.
Теоретически предполагаю, что на Flask можно прописать:
@app.errorhandler(413)
def not_found_error(error):
return render_template('413.html'), 413
Но это тогда получается, что если несколько приложений развернуто - то надо каждому прописывать, а вот как сделать, чтобы Nginx не пускал на приложения уже такой объем данных или этого нельзя сделать?
Дополнение:
Почитал руководство, которое посоветовал @andreymal. Плюс нашел еще мануал
Залил файл 413.html в каталог:
/usr/share/nginx/html
Зашел в настройки файла:
/etc/nginx/nginx.conf
Внес изменения в конце (это последняя запись):
http{
...
server {
error_page 413 /413.html;
location = /413.html {
root /usr/share/nginx/html;
internal;
}
}
}
В итоге эта ошибка не отрабатывает. Но, если сделать эти изменения в настройках приложения APP (APP.servise), то тогда страница ошибки откроется...
Но это не камельфо, т.к. получается что надо будет для каждого приложения прописывать такие настройки (либо с таким же успехом можно прописать эти ошибки в самих приложениях)...
Что не так? Может, где-то идет переопределение моих настроек?
Ответы (1 шт):
Выражаю благодарность @andreymal в помощи решения этого вопроса.
Оставлю решение, если кто тоже столкнётся в будущем.
1. Создается НТML-файлы с ошибками.
2. Заливаются на сервер (я залил через scp):
scp URL_LOCAL_FILE SSH_USER@IP_SERVER:URL_SERV_DIR
URL_LOCAL_FILE - расположение файла локально URL_SERV_DIR - расположение папки на сервере (Абсолютный путь).
Абсолютный путь можно узнать через команду:
echo $PWD
3. Создается папка с пользовательскими настройками. Я создал в:
/etc/nginx/snippets 4. Создается файл с ошибками, например: NAME_FILE:
sudo nano NAME_FILE.conf
5. Там прописываем настройки (примеры других настроек):
error_page 413 /413.html;
location = /413.html {
root /usr/share/nginx/html;
internal;
}
6. Добавляем в блок server конфига приложения:
sudo nano /etc/nginx/sites-enabled/APP_CONF
server {
...
include /etc/nginx/snippets/NAME_FILE.conf
}
Пункт №6 - применяется для всех конфигов приложений на сервере, если хотите, чтобы страница ошибки была одинаковая на всех приложениях.
- Чтобы применились настройки - надо не забыть перезагрузить nginx:
sudo systemctl restart nginx