← Назад к вопросам

Где прописываются хосты?

1.2 Junior🔥 111 комментариев
#Инструменты и DevOps

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI2 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Где прописываются хосты?

Хосты (hostname -> IP адрес) прописываются в файле hosts операционной системы. Это файл, который браузер и операционная система консультируют перед отправкой DNS запроса на сервер.

Файл hosts по операционным системам

Linux и macOS

Файл расположен по пути: /etc/hosts

# Открыть файл для редактирования (требуется sudo)
sudo nano /etc/hosts
# или
sudo vim /etc/hosts

Содержимое файла (пример):

127.0.0.1       localhost
127.0.0.1       my-app.local
192.168.1.100   server.local
::1             localhost

Windows

Файл расположен по пути: C:\Windows\System32\drivers\etc\hosts

Отредактировать:

  1. Открыть Notepad (Блокнот) от администратора
  2. File -> Open -> перейти в папку C:\Windows\System32\drivers\etc\
  3. Выбрать файл hosts (по умолчанию скрыт)

Или через PowerShell:

# Открыть файл от администратора
Start-Process notepad -ArgumentList "C:\Windows\System32\drivers\etc\hosts" -Verb RunAs

Зачем используется файл hosts?

1. Локальная разработка

# hosts
127.0.0.1       myapp.local
127.0.0.1       api.local

В браузере:

http://myapp.local:3000  # Вместо http://localhost:3000
http://api.local:8000    # Вместо http://127.0.0.1:8000

2. Тестирование HTTPS локально

# hosts
127.0.0.1       myapp.local
# Генерируем самоподписанный сертификат
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes

# Используем в Node.js (Express)
const https = require('https');
const fs = require('fs');
const app = require('./app');

const options = {
  key: fs.readFileSync('./key.pem'),
  cert: fs.readFileSync('./cert.pem')
};

https.createServer(options, app).listen(443);

Теперь можно тестировать: https://myapp.local

3. Блокирование сайтов

# hosts
127.0.0.1       ads.example.com
127.0.0.1       tracker.example.com
0.0.0.0         facebook.com

Теперь эти домены будут недоступны с этого компьютера.

4. Переопределение DNS

# Вместо реального сервера используем локальный
127.0.0.1       api.github.com

Синтаксис файла hosts

# Строки, начинающиеся с # - это комментарии

# Формат:
# IP адрес    hostname1   hostname2  hostname3

127.0.0.1    localhost
192.168.1.1  router.local admin.local
10.0.0.5     myserver.local

# IPv6
::1          localhost
fe80::1      my-ipv6-host

Практический пример для frontend разработки

# /etc/hosts на Linux/Mac
127.0.0.1       app.local
127.0.0.1       api.local
127.0.0.1       admin.local

В вашем проекте:

// .env.local или config
REACT_APP_API_URL=http://api.local:8000
REACT_APP_ADMIN_URL=http://admin.local:3000

В коде:

const apiUrl = process.env.REACT_APP_API_URL;

fetch(`${apiUrl}/users`)
  .then(response => response.json())
  .then(data => console.log(data));

Порядок разрешения имен (DNS Resolution Order)

Браузер (и ОС) ищет хост в следующем порядке:

  1. hosts файл (локальный)
  2. DNS кэш браузера
  3. DNS кэш операционной системы
  4. Рекурсивный DNS сервер (обычно от провайдера или Google 8.8.8.8)
http://myapp.local
  |
  v
Проверить /etc/hosts
  |
  v (если найдено)
127.0.0.1

Команды для проверки и очистки

Linux/macOS

# Посмотреть содержимое hosts
cat /etc/hosts

# Очистить DNS кэш (macOS)
dscacheutil -flushcache

# Очистить DNS кэш (Linux)
sudo systemd-resolve --flush-caches

# Проверить резолюцию
nslookup myapp.local
ping myapp.local

Windows

REM Посмотреть содержимое hosts
type C:\Windows\System32\drivers\etc\hosts

REM Очистить DNS кэш
ipconfig /flushdns

REM Проверить резолюцию
nslookup myapp.local
ping myapp.local

Альтернативы: dnsmasq

Для более удобного управления хостами можно использовать dnsmasq (Linux/macOS):

# Установка (macOS)
brew install dnsmasq

# Конфигурация
mkdir -p /usr/local/etc/dnsmasq.d
echo 'address=/local/127.0.0.1' > /usr/local/etc/dnsmasq.d/local.conf

# Перезагрузить
brew services restart dnsmasq

Теперь все домены *.local будут автоматически указывать на 127.0.0.1

Важные замечания

  1. Требуются права администратора для редактирования hosts
  2. Кэширование: после изменения hosts может потребоваться очистить кэш браузера
  3. Порты: hosts только переводит имя в IP, порты указываются отдельно (myapp.local:3000)
  4. HTTPS проблемы: браузер может отказать в доступе к самоподписанному сертификату
  5. Приоритет: hosts имеет приоритет над DNS

Практический чеклист для frontend разработчика

  1. Отредактировать /etc/hosts (Linux/Mac) или C:\Windows\System32\drivers\etc\hosts (Windows)
  2. Добавить строку: 127.0.0.1 myapp.local
  3. Сохранить файл (нужны права администратора)
  4. Очистить DNS кэш ОС
  5. Перезагрузить браузер (или очистить его кэш)
  6. Проверить: ping myapp.local
  7. Открыть в браузере: http://myapp.local:3000

Вывод

Хосты прописываются в системном файле hosts, которая находится в /etc/hosts (Linux/macOS) или C:\Windows\System32\drivers\etc\hosts (Windows). Это критично для локальной разработки, тестирования HTTPS и эмуляции доменов. Файл имеет простой синтаксис и требует прав администратора для редактирования.