Прежде чем настраивать Nginx, нужно понять, с чем он работает. Nginx принимает HTTP-запросы и отправляет HTTP-ответы. Если вы не понимаете, что это — конфигурация Nginx будет казаться набором случайных слов. Поэтому — разберёмся.
Вы вводите в браузере devportfolio.com и нажимаете Enter. Что происходит за следующую секунду?
Шаг 1: DNS. Браузер спрашивает DNS-сервер: «Какой IP-адрес у devportfolio.com?» Ответ: 203.0.113.42. Теперь браузер знает, куда стучаться.
Шаг 2: TCP-соединение. Браузер устанавливает соединение с сервером 203.0.113.42 на порт 80 (HTTP) или 443 (HTTPS). Это как телефонный звонок: сначала дозвониться, потом говорить.
Шаг 3: HTTP-запрос. Браузер отправляет текстовое сообщение — запрос. Nginx принимает его.
Шаг 4: Обработка. Nginx читает запрос, понимает, что нужен файл index.html, находит его на диске.
Шаг 5: HTTP-ответ. Nginx отправляет файл браузеру вместе с метаинформацией (статус, тип файла, размер).
Шаг 6: Рендеринг. Браузер получает HTML, рисует страницу. Если в HTML есть ссылки на CSS и картинки — повторяет шаги 3–5 для каждого файла.
Шесть шагов за секунду. Нас интересуют шаги 3–5 — именно ими занимается Nginx.
HTTP-запрос — это текст. Вот что браузер реально отправляет, когда вы открываете devportfolio.com:
GET / HTTP/1.1
Host: devportfolio.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: text/html
Accept-Encoding: gzip, deflate
Connection: keep-alive
Первая строка — самая важная:
GET — метод. «Дай мне». Самый частый. Есть ещё POST (отправить данные — форма обратной связи DevPortfolio), PUT, DELETE и другие.
/ — путь. Корень сайта. Если бы запросили devportfolio.com/projects, путь был бы /projects.
HTTP/1.1 — версия протокола.
Остальные строки — заголовки. Host — какой сайт запрашивают (на одном сервере может быть несколько сайтов). User-Agent — какой браузер. Accept — какие форматы принимает. Nginx читает эти заголовки и принимает решения на их основе.
Nginx получил запрос, нашёл файл — и отправляет ответ:
HTTP/1.1 200 OK
Server: nginx/1.25.4
Content-Type: text/html; charset=UTF-8
Content-Length: 847
Date: Mon, 27 Mar 2026 10:30:00 GMT
<!DOCTYPE html>
<html lang="ru">
<head>
<title>DevPortfolio</title>
...
Первая строка — статус. 200 OK означает «всё хорошо, вот ваш файл». Дальше — заголовки ответа. И после пустой строки — тело: сам HTML-файл.
Content-Type: text/html — тип содержимого. Браузер по этому заголовку понимает, что получил HTML, а не картинку. Для CSS будет text/css, для картинки — image/png. Nginx определяет тип автоматически по расширению файла.
Content-Length: 847 — размер тела в байтах. Браузер знает, сколько данных ждать.
Статусные коды — язык, на котором сервер сообщает результат. Вот те, что вы будете видеть постоянно:
2xx — Успех
200 OK — всё хорошо, вот ответ
201 Created — создано (после POST)
204 No Content — успех, но тело пустое
3xx — Перенаправление
301 Moved Permanently — страница переехала навсегда
302 Found — временный редирект
304 Not Modified — файл не изменился, используй кэш
4xx — Ошибка клиента
400 Bad Request — кривой запрос
403 Forbidden — доступ запрещён
404 Not Found — страница не найдена
429 Too Many Requests — слишком много запросов (rate limiting)
5xx — Ошибка сервера
500 Internal Server Error — что-то сломалось на сервере
502 Bad Gateway — Nginx не смог связаться с бэкендом
503 Service Unavailable — сервер перегружен
504 Gateway Timeout — бэкенд не ответил вовремя
Коды 502 и 504 вы увидите, когда настроите Nginx как reverse proxy перед DevPortfolio API. Если бэкенд упал — Nginx вернёт 502. Если завис — 504. По коду сразу понятно, где искать проблему: 4xx — клиент виноват, 5xx — сервер.
Посмотреть HTTP-запросы и ответы можно прямо в браузере. Откройте любой сайт, нажмите F12 (или Ctrl+Shift+I), перейдите на вкладку Network (Сеть) и обновите страницу.
Вы увидите список всех запросов: HTML-файл, CSS, картинки, шрифты, скрипты. Кликните на любой — откроются заголовки запроса и ответа. Это тот самый текст, который мы разбирали выше, только в удобном виде.
Попробуйте сейчас — откройте DevTools на любом сайте и найдите:
- Заголовок
Serverв ответе — многие сайты покажутnginx - Статусный код — 200, 304 или что-то другое
- Content-Type — html, css, png, javascript
HTTP-запрос — текстовое сообщение от браузера серверу: метод (GET, POST), путь (/, /projects), заголовки (Host, User-Agent).
HTTP-ответ — статусный код + заголовки + тело (HTML, CSS, картинка, JSON).
Статусные коды: 200 — успех, 301 — редирект, 404 — не найдено, 500 — ошибка сервера, 502 — бэкенд недоступен.
Nginx получает HTTP-запрос, находит файл или перенаправляет бэкенду, формирует HTTP-ответ и отправляет браузеру.
DevTools (F12 → Network) и curl -v — инструменты для просмотра HTTP-запросов и ответов.