1. 1

# конспект · шаг 1 из 1

Конспект раздела: как nginx думает

выжимка - её можно унести в заметки

Раздел даёт систему координат: зачем nginx нужен, как он устроен внутри и по какому маршруту идёт каждый запрос.

Три уровня понимания

ЗАЧЕМ    граница перед приложением: статика, медленные клиенты, TLS, балансировка
КАК      мастер (права, конфиг) + воркеры (цикл событий, без привилегий)
ЧТО      шесть решений по каждому запросу - от выбора server до записи в лог

Протокол под ногами

запрос:  GET /catalog/42?sort=price HTTP/1.1   ← строка
         Host: shop.local                      ← заголовки
                                               ← пустая строка: «заголовки кончились»
         (тело - у GET его нет)
  • В строке запроса едут только путь и параметры; имя сайта - в Host, фрагмент после # не уходит на сервер вовсе.
  • $request_uri - как прислали, $uri - раскодированный (по нему выбирается location), $args - параметры, они не раскодируются.
  • Классы кодов: 1xx промежуточный, 2xx готово, 3xx иди туда, 4xx так спросить нельзя, 5xx сломалось на сервере.
  • Соединение живёт дольше запроса (keepalive_timeout, 75 с), и где кончился ответ, говорят Content-Length или chunked.
  • Участковые заголовки (Connection, Upgrade, Transfer-Encoding и ещё пять) прокси не пересылает - отсюда обязательные строки в конфиге для WebSocket.
  • Имя заголовка с подчёркиванием nginx отбрасывает молча.

Шесть решений - главная схема курса

server → location → return/rewrite → источник → заголовки → лог

Все следующие разделы разбирают по одному участку этой цепочки. Любую поломку разбирают, проходя список сверху вниз.

Что помнить про процессы

Факт Следствие
воркеров ≈ по числу ядер worker_processes auto, а не «побольше»
цикл событий один на воркер медленная операция блокирует все его соединения
мастер держит привилегии уязвимость обработки запроса попадает в непривилегированный процесс
worker_processes × worker_connections потолок соединений; для прокси считай по два

Команды раздела

$  команда
nginx -T                              # итоговый конфиг после всех include
nginx -t && systemctl reload nginx    # проверить и применить
nginx -T | grep -n "server_name\|listen\|proxy_pass"   # карта чужого сервера
ps aux | grep nginx                   # мастер и воркеры

Чек-лист: что ты должен уметь объяснить

  • Что именно снимает nginx с приложения и почему это дешевле делать до него.
  • Чем мастер отличается от воркера и почему воркеров не делают «побольше».
  • Почему медленный код нельзя выполнять внутри воркера.
  • Все шесть решений по порядку - и какое из них отвечает за конкретный симптом.
  • Чем conf.d/ отличается от sites-available/sites-enabled.

Комментарии

Пока нет комментариев. Будь первым!

Оставить комментарий

Комментарий появится после проверки. Email не публикуется. Войти, чтобы не вводить имя каждый раз.