Поддомен — это часть URL перед основным доменом: blog.example.com, shop.example.com. Поддомены позволяют разделить разные части сайта или создать отдельные проекты без покупки нового домена.
Для чего используются поддомены
| Поддомен | Типичное использование |
|---|---|
| www.example.com | Основной сайт (исторически) |
| blog.example.com | Блог на отдельной CMS |
| shop.example.com | Интернет-магазин |
| api.example.com | API-эндпоинты |
| mail.example.com | Веб-почта |
| staging.example.com | Тестовая среда |
| cdn.example.com | Раздача статики |
Создание поддомена в cPanel
- Войдите в cPanel → Домены → Субдомены
- В поле «Субдомен» введите:
blog - Выберите основной домен из списка
- Укажите папку (Document Root):
public_html/blog - Нажмите Создать
cPanel автоматически создаёт DNS A-запись для поддомена.
Ручное создание через DNS
Если управляете DNS самостоятельно (Cloudflare и т.д.):
# A-запись (прямой IP)
blog IN A 192.168.1.100
# CNAME (псевдоним основного домена)
shop IN CNAME example.com.
# Wildcard — все поддомены
* IN A 192.168.1.100
Wildcard-поддомены
Wildcard (*.example.com) позволяет создавать неограниченное количество поддоменов без добавления отдельных DNS-записей. Полезно для SaaS-платформ, где каждый пользователь получает username.example.com.
Поддомены и SEO
Google индексирует поддомены как отдельные сайты. Если блог важен для SEO основного сайта — лучше разместить его в подпапке (example.com/blog/), а не на поддомене. Поддомены теряют передачу авторитета от основного домена.
Создание поддомена в DNS
Добавьте A-запись в панели управления DNS:
| Тип | Имя | Значение | TTL |
|---|---|---|---|
| A | blog | YOUR_SERVER_IP | 300 |
| A | api | YOUR_SERVER_IP | 300 |
| CNAME | www | yourdomain.com | 300 |
Настройка Nginx для поддомена
server {
listen 80;
server_name blog.yourdomain.com;
root /var/www/blog;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
SSL для поддомена
# Отдельный сертификат
certbot --nginx -d blog.yourdomain.com
# Wildcard сертификат (для всех поддоменов)
certbot certonly --dns-cloudflare -d yourdomain.com -d "*.yourdomain.com"
Частые ошибки при настройке поддоменов
Три источника почти всех проблем с поддоменами — не та DNS-зона, не тот SSL-сертификат и конфликт конфигов веб-сервера.
NXDOMAIN
Такой ответ dig при запросе поддомена почти всегда означает, что запись добавлена не в той DNS-зоне: например, в панели DNS хостинга, пока домен реально управляется через NS регистратора или Cloudflare. Проверьте, у кого сейчас авторитетные NS-серверы домена: dig example.com NS +short, и добавляйте запись именно там.
NET::ERR_CERT_COMMON_NAME_INVALID
Сертификат выпущен для example.com, а поддомен blog.example.com в него не входит. Обычный SSL от Let's Encrypt покрывает только те имена, что указаны явно при выпуске — для нового поддомена нужен либо отдельный сертификат, либо перевыпуск с добавленным именем, либо Wildcard-сертификат.
nginx: [emerg] duplicate default server for 0.0.0.0:80
В новом конфиге для поддомена случайно продублирован параметр default_server, который уже указан в конфиге основного сайта. На один IP и порт может быть только один default_server — уберите директиву из всех блоков, кроме одного.
Поддомен или подпапка: сравнение
| Параметр | Поддомен | Подпапка |
|---|---|---|
| Передача SEO-веса от основного домена | Ограниченная | Полная |
| Отдельный SSL-сертификат | Нужен свой или Wildcard | Не нужен |
| Отдельная CMS или технологии | Легко | Сложнее (общий движок) |
| Настройка CDN отдельно | Возможна | Общая для всего домена |
Для блога, который должен усиливать позиции основного сайта, обычно выбирают подпапку. Для функционально независимого проекта (личный кабинет, магазин на другом движке) — поддомен, несмотря на потерю части SEO-веса.
Когда поддомены не подходят
Некоторые тарифы виртуального хостинга ограничивают количество поддоменов — проверьте лимит тарифа в лимитах и ресурсах хостинга перед тем, как проектировать архитектуру на десятках поддоменов. Wildcard-поддомены (*.example.com) для SaaS с пользовательскими именами требуют Wildcard SSL и аккуратной обработки на уровне приложения — если ожидается всего 2–3 поддомена, Wildcard избыточен, проще выпустить обычные сертификаты на каждый.
Как проверить результат
Проверяйте DNS и веб-сервер по отдельности — это сразу показывает, где именно проблема:
# Убедиться, что поддомен резолвится в нужный IP
dig blog.example.com A +short
# Проверить, что Nginx отдаёт правильный конфиг для этого имени
curl -I -H "Host: blog.example.com" http://YOUR_SERVER_IP/
# Проверить сертификат для конкретного поддомена
openssl s_client -connect blog.example.com:443 -servername blog.example.com </dev/null 2>/dev/null | openssl x509 -noout -subject
Вторая команда с явным заголовком Host проверяет маршрутизацию Nginx напрямую по IP, в обход DNS — это отличает проблему с DNS от проблемы с конфигом веб-сервера. Если через IP приходит контент не того сайта, дело в server_name, а не в DNS-записи.