Перейти к основному содержимому

Настройка Wildcard DNS

Wildcard DNS позволяет создавать поддомены арендаторов вида acme.yourdomain.com, techcorp.yourdomain.com и т.д. Это опционально — FeedbackPulse прекрасно работает с URL-адресами на основе слагов (например, /wall/acme-corp) без wildcard DNS.


Нужен ли мне Wildcard DNS?

СценарийНужен Wildcard DNS?
Арендаторы используют публичные страницы на основе слагов (/wall/acme-corp)Нет
Арендаторы хотят собственный поддомен (acme.yourdomain.com)Да
Арендаторы приносят собственный домен (feedback.acme.com)Нет (используйте CNAME)

Что потребуется

  1. Wildcard DNS A-запись: *.yourdomain.com → IP вашего сервера
  2. Wildcard SSL-сертификат: покрывает *.yourdomain.com
  3. Конфигурация веб-сервера: принимает все поддомены

Шаг 1: Добавление DNS-записи

Перейдите в панель управления DNS вашего регистратора и добавьте:

ТипИмя/хостЗначениеTTL
A*123.456.789.0 (IP вашего сервера)300

Вам также нужна обычная A-запись для корневого домена:

ТипИмя/хостЗначение
A@123.456.789.0

Инструкции для конкретных провайдеров

Cloudflare

  1. Войдите в Cloudflare Dashboard
  2. Выберите ваш домен
  3. Перейдите в DNSRecords
  4. Нажмите Add Record
  5. Тип: A | Имя: * | IPv4: IP вашего сервера | Proxy: DNS only (серое облако)
  6. Нажмите Save

Важно: Для wildcard-поддоменов установите Cloudflare proxy в режим DNS only (серое облако), а не Proxied (оранжевое облако). Бесплатный план Cloudflare не проксирует wildcard-поддомены.

Namecheap

  1. Войдите → Domain ListManage ваш домен
  2. Перейдите в Advanced DNS
  3. Нажмите Add New Record
  4. Тип: A Record | Хост: * | Значение: IP вашего сервера | TTL: Automatic
  5. Сохраните

GoDaddy

  1. Войдите → My ProductsDNS для вашего домена
  2. Нажмите Add Record
  3. Тип: A | Имя: * | Значение: IP вашего сервера | TTL: 600
  4. Сохраните

Google Domains / Google Cloud DNS

  1. Перейдите на Google Domains
  2. Выберите ваш домен → DNS
  3. В разделе Custom Records добавьте:
  4. Хост: * | Тип: A | Данные: IP вашего сервера
  5. Сохраните

AWS Route 53

  1. Перейдите в Route 53Hosted Zones → выберите ваш домен
  2. Нажмите Create Record
  3. Имя записи: * | Тип записи: A
  4. Значение: IP вашего сервера | TTL: 300
  5. Нажмите Create Records

DigitalOcean DNS

  1. Перейдите в NetworkingDomains
  2. Выберите ваш домен
  3. Добавьте: Тип A | Имя хоста * | Направить на: IP вашего сервера | TTL: 300

Hetzner DNS

  1. Перейдите в Hetzner DNS Console
  2. Выберите вашу зону
  3. Добавьте запись: Тип A | Имя * | Значение: IP вашего сервера

Шаг 2: Получение Wildcard SSL-сертификата

Вариант А: Let's Encrypt через DNS Challenge (бесплатно)

Wildcard-сертификаты от Let's Encrypt требуют DNS-01 challenge (не HTTP):

# Установить Certbot с DNS-плагином для вашего провайдера
# Пример: Cloudflare
sudo apt install certbot python3-certbot-dns-cloudflare

# Создать файл учётных данных Cloudflare
sudo mkdir -p /etc/letsencrypt
sudo nano /etc/letsencrypt/cloudflare.ini

Добавьте ваш API-токен Cloudflare:

dns_cloudflare_api_token = your_cloudflare_api_token_here
sudo chmod 600 /etc/letsencrypt/cloudflare.ini

# Получить wildcard-сертификат
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d yourdomain.com \
-d "*.yourdomain.com"

DNS-плагины для других провайдеров

ПровайдерПлагин CertbotУстановка
Cloudflarepython3-certbot-dns-cloudflaresudo apt install python3-certbot-dns-cloudflare
Route 53python3-certbot-dns-route53sudo apt install python3-certbot-dns-route53
DigitalOceanpython3-certbot-dns-digitaloceansudo apt install python3-certbot-dns-digitalocean
Google Cloudpython3-certbot-dns-googlesudo apt install python3-certbot-dns-google

Вариант Б: Ручной DNS Challenge

Если ваш DNS-провайдер не имеет плагина Certbot:

sudo certbot certonly --manual --preferred-challenges dns \
-d yourdomain.com -d "*.yourdomain.com"

Certbot попросит вас создать TXT-запись. Следуйте инструкциям.

Предупреждение о ручном challenge: Вам нужно будет обновлять вручную каждые 90 дней и каждый раз обновлять DNS TXT-запись.

Вариант В: Платный Wildcard-сертификат

Купите у провайдеров, таких как:

  • Comodo/Sectigo (~$70/год)
  • DigiCert (~$400/год)
  • RapidSSL (~$125/год)

Шаг 3: Настройка веб-сервера

Смотрите разделы о wildcard в:

Ключевое: используйте ServerAlias *.yourdomain.com (Apache) или server_name yourdomain.com *.yourdomain.com; (Nginx).


Шаг 4: Проверка работы

# Проверить DNS-разрешение для поддомена
dig test.yourdomain.com

# В разделе ANSWER должен отображаться IP вашего сервера

# Проверить с curl
curl -I https://anything.yourdomain.com
# Должен вернуть 200 или перенаправление (а не «could not resolve host»)

Шаг 5: Настройка FeedbackPulse

Обновите ваш файл .env:

# Установить домен сессии для работы cookie на всех поддоменах
SESSION_DOMAIN=.yourdomain.com

# Основной URL приложения (без поддомена)
APP_URL=https://yourdomain.com

Обратите внимание на ведущую точку в SESSION_DOMAIN=.yourdomain.com — она позволяет cookie сессии работать на всех поддоменах.


Как работают поддомены в FeedbackPulse

Когда поступает запрос к acme.yourdomain.com:

  1. Middleware ResolveTenant извлекает поддомен (acme)
  2. Ищет арендатора с subdomain = 'acme'
  3. Если найден, устанавливает арендатора как текущий контекст
  4. Пользователь видит страницу входа или дашборд арендатора

Арендаторы устанавливают свой поддомен при регистрации. Вы также можете установить его вручную в панели администратора.


Следующие шаги