Cloudflare перед сервером
Домен с оранжевым облаком Cloudflare: настоящий адрес посетителя для защиты и выпуск сертификата.
Если у домена в Cloudflare включено проксирование (оранжевое облако), посетители приходят на сервер с адресов Cloudflare. Без настройки сервер не отличает посетителей: список разрешённых адресов allow_ips сравнивает адрес Cloudflare, а лимит запросов общий на всех. Настройка «Перед сервером Cloudflare» возвращает настоящий адрес посетителя.
Как это работает
Cloudflare передаёт адрес посетителя в заголовке CF-Connecting-IP. Сервер верит этому заголовку, только если запрос пришёл с адресов Cloudflare. Прямой запрос на IP сервера с таким заголовком считается по адресу, с которого пришёл: подделать адрес через заголовок нельзя.
Список адресов Cloudflare встроен в агент и раз в сутки обновляется с cloudflare.com/ips-v4 и cloudflare.com/ips-v6. Если сайт Cloudflare недоступен, остаётся последний полученный список. Обновление идёт, только пока у сервера есть проект с этой настройкой.
Шаги
- В Cloudflare создайте запись
Aна адрес сервера с оранжевым облаком, как в доменах и HTTPS. - В Cloudflare, раздел SSL/TLS:
- режим шифрования «Full (strict)»;
- «Always Use HTTPS» выключен (раздел Edge Certificates).
- В панели откройте проект, вкладка «Настройки», отметьте «Перед сервером Cloudflare» рядом с доменами и нажмите «Сохранить и задеплоить». В мастере нового проекта тот же переключатель на шаге домена.
То же самое в nolay.toml:
Что важно знать
- Режим «Flexible» не подходит: Cloudflare ходит на сервер по HTTP, сервер перенаправляет на HTTPS, и браузер уходит в бесконечный редирект.
- Настройка действует на весь проект. Домены проекта без облака работают как раньше: их посетители приходят напрямую, и сервер считает их по адресу соединения.
- Если у сервера IPv6, а Docker не пробрасывает его как надо, на странице сервера будет предупреждение про IPv6. Пока оно висит, адрес посетителя, пришедшего через Cloudflare по IPv6, не восстанавливается.

