Серверы & ОС

Что такое nginx

Что это

Веб-сервер и реверс-прокси — то, что принимает входящие запросы и решает, какому сервису их передать.

Как используем

Как входную точку почти каждого проекта: раздаёт статику, проксирует запросы к нужным контейнерам и проверяет доступ до того, как запрос попадёт дальше.

Где nginx нужен бизнесу

  • На одном сервере несколько сайтов, и каждый должен открываться по своему домену с HTTPS.
  • Страницу входа в админку пытаются подобрать, и это нужно гасить ещё до сайта.
  • Часть сайта или поток трансляции должны видеть только свои.
  • Сайт и VPN должны жить на одном порту и выглядеть снаружи одинаково.

Как мы это используем

  • Один вход на все сайты. На сервере сайтов входной nginx принимает HTTP и HTTPS, завершает TLS и по имени сайта передаёт запрос нужному контейнеру. Неизвестные имена отбрасываются, по голому IP-адресу сервер не отдаёт ничего.
  • SNI на одном порту. На входном узле VPN nginx читает имя сайта в начале TLS-соединения и решает, куда отправить поток: на сайт, в панель или в туннель.
  • Проверка доступа. В «Переговорке» каждый запрос к трансляции и голосу проходит через auth_request: перед отдачей nginx спрашивает сервис, вошёл ли человек.
  • Защита демо-стенда. На демо сайта музея nginx держит страж, заголовки безопасности, политику CSP, отказ известным скачивалкам и ограничение частоты запросов.
  • Страница входа WordPress. После переезда с Joomla на входном nginx не больше 20 запросов в минуту к странице входа, служебные файлы закрыты.

Настройку сервера с nginx делаем в разделе Инфраструктура.

Типичные проблемы

  • Новый сертификат не подхватился. certbot обновил файлы, а nginx продолжает отдавать старый сертификат до истечения. Нужен хук после продления, который заставляет nginx перечитать сертификат.
  • Правка требует пересоздать контейнер. Конфигурацию монтируем каталогом целиком: тогда правка применяется перезагрузкой конфига, а живые сессии не рвутся.
  • Лимит по IP не спасает от перебора. Пароль подбирают с разных адресов. В интернет-магазине блокировка считается по логину, а не только по адресу.
  • Нестандартный тип файла. nginx не знает .vcf, и телефон не открывает визитку как контакт. На сайте Валерия Афанасьева тип text/vcard прописан отдельно.

Когда это не нужно

Если сайт — статические страницы на хостинге вроде GitHub Pages, свой nginx не нужен: там уже есть HTTPS. И для одного бота на long polling без веб-интерфейса входной веб-сервер не требуется.

← Все термины

Нужен сайт, бот или автоматизация?

Термины объяснили — теперь давайте к делу: расскажите о задаче, а мы переведём её на понятный план работ.