Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Где прописываются хосты?
Хосты (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
Отредактировать:
- Открыть Notepad (Блокнот) от администратора
- File -> Open -> перейти в папку
C:\Windows\System32\drivers\etc\ - Выбрать файл
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)
Браузер (и ОС) ищет хост в следующем порядке:
- hosts файл (локальный)
- DNS кэш браузера
- DNS кэш операционной системы
- Рекурсивный 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
Важные замечания
- Требуются права администратора для редактирования hosts
- Кэширование: после изменения hosts может потребоваться очистить кэш браузера
- Порты: hosts только переводит имя в IP, порты указываются отдельно (
myapp.local:3000) - HTTPS проблемы: браузер может отказать в доступе к самоподписанному сертификату
- Приоритет: hosts имеет приоритет над DNS
Практический чеклист для frontend разработчика
- Отредактировать
/etc/hosts(Linux/Mac) илиC:\Windows\System32\drivers\etc\hosts(Windows) - Добавить строку:
127.0.0.1 myapp.local - Сохранить файл (нужны права администратора)
- Очистить DNS кэш ОС
- Перезагрузить браузер (или очистить его кэш)
- Проверить:
ping myapp.local - Открыть в браузере:
http://myapp.local:3000
Вывод
Хосты прописываются в системном файле hosts, которая находится в /etc/hosts (Linux/macOS) или C:\Windows\System32\drivers\etc\hosts (Windows). Это критично для локальной разработки, тестирования HTTPS и эмуляции доменов. Файл имеет простой синтаксис и требует прав администратора для редактирования.