DNS и Cloudflare
NexCMP требует одно доменное имя (свой основной домен) и поддерживает два режима работы.
Режим A: DNS указывает напрямую на сервер
- Создайте запись A
cloud.example.com → <server public IPv4>(а также запись AAAA, если у сервера есть IPv6). - При необходимости создайте
admin.cloud.example.comиpartner.cloud.example.com, указывающие на тот же IP-адрес. - Запустите (или перезапустите) установщик. Он определит, что имя резолвится в собственный публичный IP-адрес сервера, и получит сертификат Let's Encrypt через проверку HTTP-01 на порту 80.
Режим B: домен проксируется через Cloudflare
Создайте те же записи с оранжевым облаком (Proxied). Установщик обнаружит, что имя резолвится только в адреса Cloudflare, и переключится в режим Cloudflare:
- nginx по-прежнему слушает порты 80/443 на вашем сервере;
- реальный IP-адрес посетителя считывается из заголовка
CF-Connecting-IP— только для подключений из опубликованных диапазонов Cloudflare, поэтому подделать его никто не сможет; - сертификат получается через Let's Encrypt (Cloudflare пересылает проверку challenge на ваш origin-сервер); если это пока невозможно, создается самоподписанный origin-сертификат, чтобы работал режим «Full», а повторный запуск установщика позже обновит его до Let's Encrypt.
Вы можете принудительно включить этот режим с помощью --behind-cloudflare.
::: important Настройка режима SSL/TLS в Cloudflare В Cloudflare перейдите в SSL/TLS › Overview и выберите Full (strict), как только установщик сообщит о получении сертификата Let's Encrypt. При использовании самоподписанного origin-сертификата выберите Full. Режим Flexible приведет к циклической переадресации. :::
TIP
Если опция «Always Use HTTPS» включена, Cloudflare отправляет запрос валидации на порт 443 вашего origin-сервера. Установщик обрабатывает это, сначала создавая временный самоподписанный сертификат, а затем повторяя попытку получения Let's Encrypt.
Проверка
bash
dig +short cloud.example.com # A record (a Cloudflare address in mode B)
curl -I https://cloud.example.com/healthz
sudo certbot certificates # certificate name, domains and expiryСертификаты обновляются автоматически по таймеру certbot. Для обновления используется webroot /var/www/nexcmp-acme, поэтому порт 80 должен оставаться доступным (напрямую или через Cloudflare).
Частые проблемы
| Симптом | Причина | Решение |
|---|---|---|
| Установщик сообщает «DNS … does not point to … (nor to Cloudflare) — skipping nginx/TLS» | DNS-запись отсутствует, указана неверно или еще не разошлась | Исправьте запись, дождитесь распространения DNS и запустите установщик снова. |
Браузер показывает ERR_TOO_MANY_REDIRECTS за Cloudflare | Режим SSL установлен в Flexible | Установите Full (strict) (или Full). |
| Ошибка Cloudflare 525/526 | Origin-сертификат отклонен | Используйте Full с самоподписанным origin-сертификатом или Full (strict) с Let's Encrypt. |
| В логах для всех посетителей отображаются IP-адреса Cloudflare | Режим Cloudflare не активен | Запустите установщик повторно с параметром --behind-cloudflare. |
Подробнее в разделе Ошибки при установке.