nginx (швейцар у двери)
На пальцах
Представь торговый центр с одним входом. На двери стоит швейцар. Заходит человек: «мне в обувной» — швейцар показывает «третий этаж». «Мне в кафе» — «второй, по лестнице направо». Сам он ничего не продаёт и не варит, но без него все толпились бы в дверях и не знали, куда идти. nginx — это такой швейцар на входе в сервер: разбирает, кто пришёл и за чем, и направляет к нужной внутренней программе.
Что это
Программа, которая стоит на «входной двери» сервера и решает, кому из внутренних сервисов отдать пришедший запрос. По умолчанию слушает порты 80 (обычный HTTP) и 443 (зашифрованный HTTPS). Умеет расшифровывать HTTPS, раздавать статические файлы и кешировать ответы.
Зачем
У любого сайта в интернете один публичный адрес и одна пара входов — порты 80 и 443. А внутри сервера обычно крутится несколько разных программ. Например, у типового интернет-магазина это каталог товаров, личный кабинет, платёжный сервис, картинки к карточкам, страница о доставке. Если каждую из них выставить в интернет напрямую, посетителю пришлось бы запоминать разные адреса и порты, а браузер не показал бы зелёный замочек безопасности. nginx собирает всё за одной дверью и по доменному имени и пути в адресе решает, кого из внутренних позвать.
Ещё nginx умеет:
- расшифровать HTTPS (TLS termination), чтобы внутрь сервисам уже шёл обычный HTTP
- автоматически получать и обновлять бесплатный сертификат безопасности (Let's Encrypt через протокол ACME)
- сжимать ответы, чтобы страница грузилась быстрее (gzip и brotli)
- ограничивать число запросов с одного адреса, чтобы сайт не положили наплывом посетителей или целенаправленной атакой (rate limiting)
- записывать в журнал каждый пришедший запрос — кто, откуда, что попросил и с каким результатом