Недавно мы столкнулись с ошибкой ip_10_secs_limit из-за того, что пользователь использовал iCloud Private Relay, который работает с пулом общих IP-адресов.
Есть ли способ смягчить это ограничение? Я подозреваю, что мы лишь незначительно превышаем этот лимит, и проблем со спамом у нас не возникало.
Я нашёл упоминание в коде и параметр GlobalSetting.max_reqs_per_ip_per_10_seconds, но не смог найти его при поиске в настройках Discourse.
Показывают ли ваши логи IP-адреса пользователей или адреса iCloud? Если последнее, то вам нужно исправить конфигурацию nginx, чтобы IP-адрес конечного пользователя передавался в Discourse, а не прокси. Темы о запуске Discourse с другими серверами содержат код, который нужно добавить в app.yml для решения этой проблемы. Нужно изменить заголовок X-Forwarded-For, если память мне не изменяет.
Вы можете переопределить эту настройку с помощью переменной окружения:
Возможно, iCloud был ложной тревогой; у меня есть ещё один отчёт от пользователя Chrome, который тоже столкнулся с этой проблемой. Удивительно, что эта проблема возникла только сейчас, несмотря на то, что конфигурация сервера и прочее не менялись (используется версия 2.9.0.beta9), поэтому я задаюсь вопросом, почему это началось.
Вы можете переопределить эту настройку с помощью переменной окружения
То есть я могу установить ip_10_secs_limit как переменную окружения на сервере? Всё ли должно быть в нижнем регистре, нужен ли префикс? Я был сбит с толку, потому что в сообщении об ошибке указывалось ip_10_secs_limit, а в исходном коде Discourse — GlobalSetting.max_reqs_per_ip_per_10_seconds, поэтому я не уверен, какое имя переменной использовать.
Кажется, вы правы насчет IP-адреса; похоже, он определяется как адрес Cloudflare. Похоже, здесь есть некоторые известные проблемы, я изучу этот вопрос!