Локальная разработка с локальным DNS
25 августа 2025
При локальной разработке часто возникает необходимость, чтобы все тестовые домены (например, mysite.local
, api.test
или даже целая зона *.dev
) указывали на ваш локальный сервер (127.0.0.1
). Это удобно для работы с несколькими проектами, настройки прокси или имитации продакшен-окружения.
В этой статье разберём, какие есть способы организовать локальный DNS и какие инструменты лучше всего подходят для разных систем.
🔹 Способ 1. Файл hosts (просто, но ограниченно)
Самый очевидный вариант — использовать системный файл hosts
.
- Linux/Mac:
/etc/hosts
- Windows:
C:\Windows\System32\drivers\etc\hosts
Пример записи:
127.0.0.1 mysite.local
127.0.0.1 api.local
❌ Минусы:
- Нужно прописывать каждый домен вручную.
- Нельзя использовать маску
*.local
.
Подходит только для пары доменов, но не для масштабной разработки.
🔹 Способ 2. Локальный DNS-резолвер (рекомендуется)
Если вы хотите, чтобы все поддомены или целые зоны (например, *.local
или *.test
) указывали на 127.0.0.1
, лучше использовать локальный DNS-сервер.
Linux / macOS: dnsmasq
Устанавливаем:
# macOS (через Homebrew)
brew install dnsmasq
# Ubuntu/Debian
sudo apt install dnsmasq
Редактируем конфиг (/usr/local/etc/dnsmasq.conf
на macOS или /etc/dnsmasq.conf
на Linux):
address=/.test/127.0.0.1
address=/.local/127.0.0.1
Перезапускаем:
# macOS
sudo brew services restart dnsmasq
# Linux
sudo systemctl restart dnsmasq
Теперь все запросы к доменам вида *.test
или *.local
будут автоматически перенаправляться на 127.0.0.1
.
Windows: Acrylic DNS Proxy
Для Windows удобно использовать Acrylic DNS Proxy.
Он перехватывает DNS-запросы и позволяет настраивать зоны по аналогии с dnsmasq
.
Пример настройки:
address=/.local/127.0.0.1
🔹 Способ 3. Контейнеры и прокси
Если вы работаете с Docker, можно использовать готовые решения:
- Traefik
- nginx-proxy
Они умеют перехватывать домены (например, project1.local
, project2.local
) и автоматически проксировать запросы к нужным контейнерам. Отличный вариант для разработки сразу нескольких сервисов.
🔹 Способ 4. Особенности macOS: resolver
На macOS есть удобный механизм resolver
, который позволяет задать правила для отдельных доменных зон.
Например, создадим резолвер для .test
:
sudo mkdir -p /etc/resolver
echo "nameserver 127.0.0.1" | sudo tee /etc/resolver/test
Теперь все домены с окончанием .test
будут резолвиться через ваш локальный DNS (например, dnsmasq
).
✅ Вывод
Если вам нужно просто добавить пару доменов — используйте hosts
.
Если хотите настроить полноценное окружение с wildcard-доменами (*.local
, *.test
) — ставьте dnsmasq
(Linux/Mac) или Acrylic DNS (Windows).
Для Docker-сервисов лучше подойдут Traefik или nginx-proxy.
Таким образом, локальный DNS упрощает разработку и делает окружение ближе к продакшену.