Как решить проблему, когда после развёртывания Discourse в контейнере 1Panel с использованием обратного прокси и настройки CDN Cloudflare для домена весь трафик отображается как исходящий от серверов Cloudflare, а не от реальных IP-адресов браузеров пользователей?
В файле app.yml вы хотите использовать шаблон Cloudflare.
Пробовал, не получается
. Возможно, причина в том, что я развернул в контейнере 1panel и использовал обратный прокси?
Можете ли вы напрямую отредактировать файл конфигурации nginx? Если да, внесите изменения, предложенные здесь. После перезагрузки службы nginx всё должно заработать. Надеюсь, это поможет!
Интересно узнать причины использования двух обратных прокси: одного у хостинг-провайдера и CloudFlare. Есть ли для этого техническое обоснование?
Я развернул Discourse в контейнере с помощью панели управления сервером 1Panel (с открытым исходным кодом), чтобы упростить управление сервером.
Архитектура 1Panel выглядит следующим образом: Пользователь -> Cloudflare -> Nginx 1Panel -> Контейнер Discourse.
Мое понимание таково: даже если я изменю конфигурацию app.yml в Discourse, Nginx от 1Panel все равно будет находиться между Cloudflare и Discourse.
Итак, это техническое ограничение, введенное 1panel.
Вы запускаете несколько серверов или только Discourse на VPS? Если вы запускаете только Discourse, вам, вероятно, не нужен 1panel. Если только нет технической причины, по которой вам нужен 1panel.
Мой Discourse работает нативно на VPS за Cloudflare. Эта конфигурация работает.
Помимо Discourse, есть OpenClaw ![]()
Почти наверняка.
IP-адрес, который вы видите, — это IP-адрес контейнера 1panel?
При просмотре пользователей администратором последний используемый IP-адрес отображается как IP-адрес Cloudflare.
Вы это уже реализовали?
Это решение для Apache, позволяющее использовать IP-адрес конечного пользователя вместо IP-адреса Cloudflare.
Спасибо, я использую nginx. Я изучил несколько руководств, в которых предлагается настроить конфигурационный файл обратного прокси-сервера на хосте с nginx. Попробую это сделать, когда будет время.
Вы установили шаблон Cloudflare, как предлагалось? Если нет, то почему вы спрашиваете о помощи здесь?
Шаблон Cloudflare? Я уже изменил конфигурационный файл YAML и включил шаблон Cloudflare. Однако я развернул Discourse в контейнере через 1Panel (архитектура 1Panel: пользователь → Cloudflare → 1Panel Nginx → контейнер Discourse). Изменения только в файле YAML недостаточно; необходимо также изменить конфигурационный файл обратного прокси-сервера Nginx внутри 1Panel. Сейчас у меня нет времени, поэтому я ещё не приступил к этим изменениям.
Похоже, вам нужно изменить экземпляр nginx в 1Panel, чтобы использовать его функциональность real_ip для запросов пользователей. Cloudflare передает эту информацию в заголовке CF-Connecting-IP, и вы можете использовать этот заголовок, чтобы настроить nginx соответствующим образом.
Вероятно, стоит создать автоматизированный скрипт для регулярного скачивания списков прокси-адресов Cloudflare (IPv4, IPv6), чтобы ваши диапазоны real_ip в nginx всегда были актуальны.
Если у вас нет доступа к файлу nginx.conf в 1Panel, то, скорее всего, вы ничего не сможете сделать. Сочетание real_ip в nginx и заголовка CF-Connecting-IP от Cloudflare — это стандартное решение данной проблемы, если вы управляете собственным обратным прокси-сервером перед самодостаточным Discourse.
Наконец-то нашлось время решить эту проблему. Подробнее: Решение проблемы: при развертывании Discourse через 1Panel все IP-адреса пользователей отображаются как Cloudflare, а не реальные IP-адреса браузеров — Поддержка — Discourse Meta