Cover Image for Локальная разработка с локальным DNS

Локальная разработка с локальным 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 упрощает разработку и делает окружение ближе к продакшену.