Проблемы с ограничителем запросов при загрузке файла резервной копии / невозможно отключить ограничитель запросов

Я перемещаю существующий экземпляр Discourse с текущего хоста на виртуальную машину AWS EC2.

Сайт находится за балансировщиками нагрузки Amazon. Я уже успешно настроил app.yml, добавив соответствующие директивы set_real_ip_from, чтобы NGINX знал об IP-адресах балансировщиков. Я знаю, что это работает, так как вижу свой реальный IP при проверке последнего IP-адреса пользователя.

Однако, когда я пытаюсь загрузить резервную копию объемом 375 МБ со старого сервера, новый сайт начинает выдавать ошибки 429, когда файл загружен примерно на 35%, и процесс загрузки завершается неудачей. Заголовки в ответах 429 указывают на «discourse-rate-limit-error-code: id_10_secs_limit».

Это меня удивило. У меня было открыто окно Dev Tools браузера на вкладке «Сеть» (Network), и я видел, как загружается множество небольших фрагментов (полагаю, по 5 МБ) довольно быстро. У меня быстрое подключение к Интернету со скоростью 200 Мбит/с, так что, возможно, оно просто слишком быстрое для настроек ограничителя скорости по умолчанию? Или, возможно, предполагалось, что задачи администратора обычно выполняются из частной сети (что невозможно в моей настройке AWS)?

Но подождите, есть еще! Я попытался отключить ограничитель скорости, закомментировав строку «templates/web.ratelimited.template.yml» в файле app.yml и пересобрав приложение, но это не помогло. Я все еще получал ошибки 429, когда файл был загружен примерно на 35%.

Поэтому я быстро добавил нижеуказанные переменные окружения в файл app.yml, пересобрал его и наконец смог загрузить резервную копию для восстановления.

DISCOURSE_MAX_REQS_PER_IP_MODE: none
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 1000

Я считаю, что это настройки ограничителя скорости, поэтому было странно видеть, что что-то реагирует на эти настройки, когда ограничитель скорости, как утверждалось, был отключен.

Итог: я хотел бы получить рекомендации по следующим вопросам:

  1. Должен ли ограничитель скорости блокировать загрузку резервных копий таким образом?
  2. Почему ограничитель скорости не был отключен, когда я закомментировал эту строку и пересобрал приложение?

Спасибо!

Если вы пытаетесь загрузить резервную копию, используйте scp или загрузите её в S3.

Под фразой «использовать scp» вы имеете в виду передачу файла напрямую на виртуальную машину и его размещение в определённой папке, которую Discourse сможет найти? Я не пробовал это делать, но похоже, что такая папка — это /var/discourse/shared/standalone/backups/default?

И действительно ли использование S3 позволит обойти балансировщики нагрузки Amazon?

Спасибо!

Если эта папка существует, то, скорее всего, это именно то место.

Да, обойдёт.

Руководство по восстановлению по умолчанию предусматривает создание папки default, поэтому даже если её нет, её можно создать вручную.

Ссылка: Restore a backup from the command line