Такой вопрос задали моему фронтенд-другу, когда он шел на собеседование.

Такой вопрос задали моему фронтенд-другу, когда он шел на собеседование. Он ответил только на часть и хотел, чтобы я дал ему немного научно-популярных материалов, когда он вернется, поэтому я написал эту статью.

Что такое НГИНКС?

NGINX (engine x) — это легкий, высокопроизводительный HTTP и обратный прокси-сервер, а также прокси-сервер общего назначения (TCP /UDP/IMAP/POP3/SMTP), изначально написанный русским Игорь Сысоев.

NGINX — это высокопроизводительный HTTP- и обратный прокси-сервер, который характеризуется низким потреблением памяти и мощными возможностями параллелизма. На самом деле возможности параллелизма NGINX лучше, чем у веб-сервера того же типа.

NGINX специально разработан для оптимизации производительности. Наиболее важным требованием является производительность, и большое внимание уделяется эффективности. Сообщается, что NGINX может поддерживать до 50000 одновременных подключений.

Прямой прокси и обратный прокси

NGINX — это обратный прокси-сервер, так что же такое обратный прокси-сервер? Давайте сначала посмотрим, что называется прямым прокси.

Прямой прокси-сервер: пользователи компьютеров в локальной сети не могут получить прямой доступ к сети, доступ к ним возможен только через прокси-сервер (сервер). Эта прокси-служба называется прямым прокси.

Обратный прокси-сервер: клиент не может воспринимать прокси-сервер, поскольку ему не нужно настраивать сеть для доступа к сети, пока запрос отправляется на обратный прокси-сервер, обратный прокси-сервер выбирает целевой сервер для получения данных, а затем возвращается к клиенту. Обратный прокси-сервер и целевой сервер — это просто сервер для внешнего мира, который раскрывает адрес прокси-сервера и скрывает реальный IP-адрес сервера.

Балансировка нагрузки

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

Если нет балансировки нагрузки, операция между клиентом и сервером обычно такова: клиент запрашивает сервер, а затем сервер обращается к базе данных для запроса данных и возвращает возвращенные данные клиенту:

Однако с увеличением числа клиентов и быстрым ростом данных и трафика эта ситуация неудовлетворительна. Из приведенного выше рисунка видно, что запрос и ответ клиента проходят через сервер, поэтому мы увеличиваем количество серверов, чтобы разрешить. Можно ли решить эту проблему, разделив несколько серверов?

Но в это время для клиента фиксируется доступ к этому адресу, поэтому ему будет все равно на время сервера. Вам нужно только вернуть данные мне и все будет ОК, поэтому нам нужен "менеджер", Найдите босса этих серверов, клиент напрямую находит босса, а затем босс назначает, кто обрабатывает чьи данные, тем самым уменьшая давление на сервер, а этот «босс» — обратный прокси-сервер, а номер порта — сотрудник этих серверов. Нет.

Вот так, когда будет 120 запросов, обратный прокси-сервер будет равномерно распределяться по серверам, то есть каждый будет обрабатывать по 40 запросов. Этот процесс называется: балансировка нагрузки. Конечно, существует множество способов реализации распределения, я лишь кратко представил один из них.

Динамическое и статическое разделение

Когда клиент инициирует запрос, обычная ситуация такова:

Статические ресурсы: как HTML, CSS

Динамические ресурсы: как Java

Чтобы уменьшить нагрузку на сервер, мы разделяем динамические ресурсы и статические ресурсы и передаем их на разные серверы для анализа, что ускоряет анализ и снижает нагрузку на один сервер.

Установить НГИНКС

Чтобы установить NGINX, вы можете обратиться к онлайн-руководству, или я напишу следующую статью.

Здесь я перечисляю некоторые часто используемые команды:

  • Версия просмотра: nginx -v
  • Начало: nginx
  • Выключение: nginx -s stop
  • Определить правильность файла конфигурации: nginx -t
  • Перезагрузить конфигурацию: nginx -s reload

Файл конфигурации NGINX

Конфигурационный файл разделен на три модуля:

Глобальный блок: от начала файла конфигурации до блока событий в основном устанавливаются некоторые инструкции по настройке, влияющие на общую работу сервера NGINX. (Разумно сказать, что при настройке служб параллельной обработки, чем больше значение, тем больше может поддерживаться параллельная обработка, но в это время она будет ограничена аппаратным, программным и другим оборудованием).

Блок событий: влияет на сетевое соединение между сервером NGINX и пользователем. Общие настройки включают в себя, следует ли разрешить сериализацию сетевых подключений в рамках нескольких рабочих процессов, разрешить ли одновременный прием нескольких сетевых подключений и т. д.

Блокировка HTTP: здесь настраивается обратный прокси-сервер и балансировка нагрузки.

Правила сопоставления для местоположения

Есть четыре способа:

=: Точное совпадение, используется для URL-адресов без регулярных выражений, строка должна строго совпадать с URL-адресом, и только когда они полностью совпадают, поиск вниз и процесс запроса могут быть остановлены.

^~: Прежде чем использовать URL-адреса без регулярных выражений, сервер NGINX должен найти местоположение с наивысшей степенью соответствия между URL-адресом и строкой, а затем использовать это местоположение для немедленной обработки запроса без дальнейшего сопоставления.

~: Лучшее совпадение, используемое для обозначения того, что URL-адрес содержит регулярное выражение и чувствителен к регистру.

~*: то же, что и ~, но без учета регистра.

Дополнительные материалы на PlainEnglish.io. Подпишитесь на нашу бесплатную еженедельную рассылку новостей. Подпишитесь на нас в Twitter, LinkedIn и Discord.