Для пользователей CloudFlare: как использовать поля CF-* из заголовка HTTP вместо обычного IP?

Поскольку CloudFlare скрывает IP-адрес посетителя, было бы полезно иметь возможность захватывать дополнительные специфичные для CloudFlare поля, такие как CF-Connecting-IP, X-Forwarded-For и CF-IPCountry, из заголовков HTTP, которые они добавляют, а затем условно отображать их на странице Администрирование > Пользователи > имя_пользователя в дополнение к полям IP (которые не полезны при использовании CF) и кнопке поиска по IP.

Не могли бы вы, пожалуйста, добавить эти поля на эту страницу, когда заголовки CF-* доступны?

Один из полезных вариантов (который я использовал в других приложениях на Rails) — просто использовать эти поля вместо IP, если они доступны. Прошло уже некоторое время с тех пор, как я это реализовывал, но, если я правильно помню, мы просто устанавливали IP посетителя равным IP, если только не существует CF-Connecting-IP… но мне кажется, что я ещё что-то делал с X-Forwarded-For

Если вы используете предоставленный шаблон Cloudflare, всё это обрабатывается автоматически. Эта функция доступна в Discourse уже четыре или пять лет.

При условии, что вы следовали стандартной процедуре установки:

cd /var/discourse
nano containers/app.yml

добавьте следующую строку в секцию templates:

- "templates/cloudflare.template.yml"

Затем просто выполните пересборку:

./launcher rebuild app

После этого в вашей установке будут отображаться реальные адреса пользователей.

Это замечательно, Стивен, спасибо! Столь простая вещь, что, вероятно, её следовало бы включить по умолчанию, закомментировать или где-то задокументировать. По крайней мере, теперь её можно найти здесь через поиск по «CloudFlare» в связи с этим. И в голову даже не пришло заглянуть в папку templates! :slight_smile: