Nginx писал задний конец руководства первичного входа: основы

Nginx

Что такое Nginx?

Nginx («движок x») — это высокопроизводительный HTTP-сервер и обратный прокси-сервер, который характеризуется небольшим объемом занимаемой памяти и мощными возможностями параллелизма. На самом деле, возможности параллелизма nginx действительно лучше среди веб-серверов того же типа. отчеты показывают, что может поддерживать до 50 000 одновременных подключений. Внутренние Jingdong, Taobao, Ali и Sina используют Nginx.

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

Эта статья в качестве основы для статей, в основном на четырех nginx будет использовать самые основные концепции, которые помогут вам лучше понять, подготовиться к следующей главе, чтобы настроить код:

Без глупостей, сразу к галантерее.

Прокси вперед:

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

Последние несколько дней Ah'Dai хмурится.Некоторым предприятиям на работе нужно использовать Google Mail, но теперь, не говоря уже о Google Mail, Google не может его открыть.Меня отправила компания за российский полярный круг продавать холодильники. Я не мог получить доступ к Google, но у Эрдая был доступ к нему, и компьютер Эрдая не был ограничен, поэтому А'Дай придумал гениальный метод. Компания удалённо контролировала Ах'Дай. Компьютер Эрдая имеет доступ к Google почтовый ящик, так что проблема была решена отлично.

И путь запроса в этом примере такой,Сначала мы отправляем запрос на наш прокси-сервер, затем прокси-сервер запрашивает сервер Google и, наконец, возвращает запрошенный контент на нашу машину.. И такой шаблон мы называем прямым прокси. Как показано на картинке (картинка некрасивая, в следующий раз будет некрасивой):

Обратный прокси:

После понимания того, что такое прямой прокси, понять обратный прокси становится намного проще. В прямом прокси-сервере наш прокси-сервер существует как потребитель, а в обратном прокси-сервере мы предоставляем внешние услуги.Давайте рассмотрим следующий пример:

После возвращения Эрдая из России он ничего не добился в плане производительности, к счастью, компания не была слишком бессердечной, поэтому он дал Эрдаю шанс исправить свои ошибки. Содержание работы также очень простое.Я попросил Эрдая организовать отдел отопительного бизнеса, чтобы в будущем подготовиться к отопительному бизнесу в Африке.Конечно, это не проблема.В начале Эрдай чувствовал себя хорошо, потому что не так много отделов в компании, так что это может быть очень удобно Позвоните по чьему-то номеру, чтобы договориться о работе, например, 8080, вы справитесь с этим запросом, 8081 вы справитесь с этим, 8082 вы спросите мнение африканцев, но постепенно по мере того, как компания инвестирует все больше и больше в этом проекте Чем больше сотрудников в отделе, тем более 10000 сотрудников в отделе Эрду не реально запомнить номер каждого, поэтому Эрду настроил прокси-сервер, чтобы прокси-сервер мог запомнить номера этих людей .Цифры и функции, а Эрдаю нужно запомнить только номер прокси-сервера, так весь отдел потихоньку становится в глазах Эрдая единым целым, а конкретное количество людей Эрдаю вообще плевать, даже Эрдаю не надо узнать, какие сотрудники находятся в отделе, **как показано на рисунке:

Самая большая разница между обратным прокси и прямым прокси заключается в том, чтоКлиент совершенно не знает о существовании проксиНапример, если мы обращаемся к Google через прямой прокси-сервер, нам может потребоваться установить адрес и порт соответствующего прокси-сервера в локальном программном обеспечении, таком как малый самолет, в то время как обратный прокси-сервер вообще не нужно устанавливать.Возьмем, например, Таобао, когда клиент заходит на Таобао, он не знает, сколько серверов Таобао открыл и какой адрес у каждого сервера.Просто введите в браузере: taobao.com как обычно.Что касается Double Ten Как только приближается, сколько дополнительных серверов открыл Али, клиент совершенно не в курсе, все запросы распределяются по разным серверам через прокси-сервер посредством балансировки нагрузки.

Краткое содержание одной фразы:

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

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

Балансировка нагрузки на самом деле не новая концепция. Балансировка нагрузки фактически реализована на основе обратного прокси. Если цель обратного прокси - скрыть IP-адрес реального сервера,Балансировка нагрузки обеспечивает набор стратегий для распределения запросов с прокси-серверов на эти реальные серверы..

В Nginx всего три стратегии балансировки нагрузки для гибкого выбора разработчиков:

  • Опрос (по умолчанию):Каждый запрос распределяется по разным бэкенд-серверам один за другим в хронологическом порядке, и если бэкэнд-сервер выходит из строя, он может быть автоматически устранен.
  • Масса:Вес представляет собой вес, значение по умолчанию равно 1, чем выше вес, тем больше клиентов назначено, чем больше вес, тем больше возможностей, больше ответственности и больше обработанных запросов.
  • ip_hash: каждый запрос распределяется в соответствии с результатом хеширования IP-адреса доступа, так что каждый посетитель имеет фиксированный доступ к внутреннему серверу, что может решить проблему сеанса.

Краткое содержание одной фразы:

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

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

Когда наше приложение начинает обретать форму и бэкенду сервера приходится сталкиваться с большим количеством запросов, первоначальный смешанный динамический и статический метод упаковки и публикации больше не применим, потому что нашему серверу необходимо обрабатывать динамические запросы, отправленные клиентом, такие как как база данныхВ то же время ему необходимо обрабатывать статические запросы, отправленные от клиента, такие как статические файлы, такие как изображения и стили CSS.Большое количество запросов, несомненно, увеличит нагрузку на наш сервер и снизит нашу производительность для обработки динамических запросов Для решения этой проблемы существует метод развертывания динамического и статического разделения.

Динамическое и статическое разделение заключается в размещении статических файлов ресурсов, таких как изображения, видео, стили CSS и т. д., которые редко изменяются, на отдельном сервере, в то время как динамические запросы выполняются на другом сервере. Таким образом, сервер, отвечающий за динамические запросы, Мы можем сосредоточиться на обработке динамических запросов, тем самым повышая эффективность работы наших программ.В то же время мы также можем проводить эксклюзивную оптимизацию для наших серверов статических ресурсов, чтобы увеличить скорость ответа на наши статические запросы.

Динамическое и статическое разделение Nginx — это просто разделение динамических и статических запросов, это нельзя понимать как простое физическое разделение динамических и статических страниц. Строго говоря, динамические запросы следует отделять от статических запросов, под которыми можно понимать использование Nginx для обработки статических страниц и Tomcat для обработки динамических страниц. С точки зрения текущей реализации разделение динамического и статического можно условно разделить на два типа.

Один из них заключается в простом разделении статических файлов на отдельные доменные имена и размещении их на отдельных серверах, что в настоящее время также является основным решением;

Другой метод — смешивать и публиковать динамические и статические файлы вместе и разделять их через nginx.

Как показано ниже:

Суммировать:

Как первая статья о Nginx, эта статья в основном посвящена следующим четырем основным концепциям Nginx, которые также являются четырьмя наиболее часто встречающимися функциями в нашей повседневной разработке.В следующем разделе мы начнем с фактического кода. соответствующий код, настройка обратного прокси-сервера, балансировка нагрузки и динамическое и статическое разделение могут быть выполнены шаг за шагом. Что касается форварда, то, если вам интересно, вы можете сами проверить соответствующую информацию (собачья голова спасает вам жизнь).

Соответствующие заметки были синхронно открыты для моего github, добро пожаловать в звезду:

Заметки о разработке Hanshu

Наконец, добро пожаловать, ставьте лайки, подписывайтесь на меня и наслаждайтесь фруктами (смешно)