Привет! У меня работает Discourse на Droplet от DigitalOcean, установленный через опцию Market-App. Если прокси CF отключён (серое облако), загрузка файлов через S3 работает нормально.
Если я включаю прокси CF (оранжевое облако), загрузка файлов не удаётся, и система выводит сообщение: «Извините, произошла ошибка при загрузке файла. Пожалуйста, попробуйте снова».
Я добавил - "templates/cloudflare.template.yml" в файл app.yml и пересобрал приложение, чтобы убедиться, что всё обновлено.
Я пробовал и тестировал это миллион раз, и единственное, что меняется — это прокси CF. Поэтому я почти уверен, что проблема именно в нём. Мой сервер часто подвергается DDoS-атакам, поэтому прокси CF очень полезен. Как мне заставить это работать?
[quote=“dsaver, post:1, topic:227871, username:dsaver”]n
«Извините, произошла ошибка при загрузке файла. Пожалуйста, попробуйте снова.»
[/quote]
Верно.
Это просто позволяет Discourse находить IP-адрес пользователя, а не показывать IP-адрес Cloudflare.
Лучший способ — использовать серое облако. Но если вы хотите потратить больше времени, можно попробовать отключить различные функции ускорения. Есть несколько тем, где это обсуждается.
Где-то в Cloudflare (возможно, в разделе Speed/optimization?) вам следует отключить все оптимизации Cloudflare. Здесь есть несколько тем, обсуждающих это, но с первого взгляда найти те, где есть реальные решения, непросто. Однако можно попробовать поискать в Google «disable cloudflare optimizations».
Ваша проблема с DDoS реальна или надумана? По умолчанию в Discourse есть ограничение скорости запросов (rate limiting), что не поможет при очень распределённых DDoS-атаках. Если вы ведёте сообщество, которое привлекает участников, осуществляющих DDoS-атаки, то следует знать, что запустить Discourse так, чтобы IP-адрес не был раскрыт, довольно сложно.
Всё это к тому, что я сейчас работаю над проектом, где Cloudflare использует оранжевое облако. Я ещё раз проверю, что загрузка файлов работает.
РЕДАКТИРОВАНИЕ: О, но я использовал прямую загрузку, а не загрузку через S3.