Привет! Вы когда‑нибудь задумывались, как некоторые из крупнейших веб‑сайтов одновременно обрабатывают запросы миллионов пользователей без сбоев, или передают ваши данные, направляя вас на правильный сервер? В этой статье для начинающих сетевиков мы углубимся в три важнейших веб‑компонента: прямой прокси, обратный прокси и балансировщик нагрузки. Разбёрем эти концепции простым и понятным языком.
Прямой прокси
Представьте, что вы планируете проверить своё здоровье в многопрофильном медицинском центре, который регулярно посещаете. Но по какой‑то причине вы не желаете напрямую взаимодействовать с персоналом медучреждения. У вас есть личный помощник, который от вашего имени решает подобного рода задачи. По этой же причине медицинский персонал никогда не взаимодействует с вами напрямую, только с вашим помощником. В этом сценарии вас можно ассоциировать с ноутбуком, через который ищет информацию в интернете, а ваш личный помощник — это прокси‑сервер, который действует как посредник между вашей частной сетью, к которой подключён ноутбук, и общедоступным интернетом, куда отправляются ваши запросы. Прокси‑сервер защищает ноутбук, фильтруя трафик и блокируя вредоносные веб‑сайты и скрипты, прежде чем ответ будет перенаправлен обратно.
Представим другой сценарий. В вашей компании работает много сотрудников и все они ходят в интернет. К примеру, один сотрудник из отдела маркетинга посещает какой‑то сомнительный веб‑ресурс, возможно вредоносный, и нажимает на ссылку, чтобы загрузить новый инструмент для презентаций. С этого сайта злоумышленники в качестве ответа отправляют на его компьютер вместе с загружаемым дистрибутивом ещё и вирус. Когда вредоносный контент проникнет во внутреннюю сеть через компьютер этого сотрудника, он может нанести реальный вред всей компании.
Поэтому для защиты внутренней сети вы можете настроить весь интернет‑трафик всех компьютеров сотрудников так, что он будет проходить через прокси‑сервер, который станет «привратником» внутренней сети вашей организации. Вы можете внести в «чёрный список» любые веб‑сайты, которые должны быть недоступными для посещения сотрудниками компании. Он действует как щит между вашей частной сетью и общедоступным интернетом. А также он может регистрировать пользовательскую активность, чтобы показать, какие сайты посещают сотрудники.
Прокси‑сервер имеет ещё одну важную функцию, которая заключается в кешировании ответов. Например, сотрудник компании открыл какое‑то видео на сайте и решил его посмотреть, тогда прокси сохранит его локально. И если другие сотрудники тоже захотят посмотреть это же видео, прокси отдаст кешированную копию вместо того, чтобы снова скачивать её. Таким образом он сэкономит пропускную способность и уменьшит лишний трафик, поступающий через интернет.
Такой вид прокси называется прямым прокси‑сервером (forward proxy).
Обратный прокси
Вернёмся к нашей аналогии с многопрофильным медицинским центром. Ваш личный помощник записал вас на проверку здоровья и вы приходите в клинику в назначенное время. Теперь вместо того, чтобы самостоятельно в огромном здании искать нужный кабинет, вы подходите к стойке регистрации. Администратор вас регистрирует, затем приглашает следовать за ним и приводит в нужный кабинет. В этой ситуации администратор — это тоже прокси, но на этот раз на принимающей запрос стороне. Сидит он в клинике в окружении всевозможных кабинетов (в нашем случае серверов) и управляет пациентами (входящими запросами), распределяя их по нужным врачам, этажам и кабинетам, проверяя загруженность и имея обзор всего внутреннего потока.
Этот прокси, находящийся на серверной стороне и обрабатывающий входящие клиентские запросы, называется обратным прокси‑сервером (реверсивным, reverse proxy). А равномерное распределение пациентов в клинике — это балансировка нагрузки, которая может быть одной из ключевых функций обратного прокси‑сервера.
Обратные прокси решают большинство задач прямых прокси. Например, они действуют как щит. К примеру, когда у вас стоят сотни серверов и все они имеют доступ к конфиденциальным данным или коду, очень опасно предоставлять им прямой доступ в интернет. Поэтому вы просто помещаете один или несколько прокси‑серверов в качестве точек входа и настраиваете для них все меры безопасности. Обратные прокси будут сканировать запросы от внешних клиентов, шифровать трафик, проверять на наличие основных угроз или любых попыток взлома ваших систем, кешировать ответы и вести журнал событий.
Балансировщик нагрузки
Балансировка нагрузки — это лишь одна из множества функций обратного прокси‑сервера. Но многие из вас могут просить: «А что насчёт облачного балансировщика? Зачем нам нужны обратные прокси, когда у нас есть облачный балансировщик, является ли он заменой обратному прокси?» На практике в компаниях с обширными внутренними сетями лучше использовать оба решения.Облачный балансировщик нагрузки находится вне вашего контура и играет роль входной точки в вашу частную сеть, в то время как обратные прокси‑серверы будут маршрутизировать трафик внутри вашей сети. А балансировщик будет распределять нагрузку на обратные прокси‑серверы. Это улучшит защиту и масштабируемость вашей инфраструктуры.
Вы, возможно, спросите: «А зачем мне дважды балансировать нагрузку на разных уровнях? Зачем мне нужно вешать это на внутренний прокси, если у меня уже есть балансировщик снаружи?» Обратный прокси‑сервер выполняет более «мелкодисперсную», так сказать, балансировку нагрузки на прикладном (седьмом) уровне, которая позволит реализовать гораздо более интеллектуальную маршрутизацию к веб‑серверам. В то время как облачный балансировщик нагрузки распределяет трафик на основе более простых алгоритмов, чаще всего на транспортном (четвёртом) уровне.
На обратном прокси‑сервере вы можете настроить более сложную логику маршрутизации на основе файлов cookie, URL, заголовков запроса. Например, чтобы все запросы от одного и того же пользователя всегда приходили на один и тот же веб‑сервер, обратный прокси будет проверять все связанные данные сеансов, cookie‑файлы и пересылать клиентские запросы на соответствующие серверы. Обратный прокси‑сервер также может обрабатывать прекращение SSL и TLS, и вы можете проверять зашифрованный трафик, чтобы принимать более обоснованные решения по балансировке нагрузки. Это особенно важно при микросервисной архитектуре с десятками и сотнями сервисов. В нашем сценарии медицинского центра это было бы эквивалентно тому, как если бы администратор, например, знал некоторых постоянных пациентов и выбирал для них наиболее удобную комбинацию процедур, или они могли сами выбирать эту последовательность, или администратор предложил бы им ещё «закрытые» акции с выгодными ценами на услуги, и т. д.
Описанную схему целесообразно использовать в кластере Kubernetes с микросервисами. Там Ingress‑контроллер, который по сути является обратным прокси‑сервером для Kubernetes, обеспечивает внутреннюю маршрутизацию и безопасность. А облачный балансировщик выступает в качестве первой линии защиты, управляя внешним трафиком и частично фильтруя его, прежде чем он попадёт в кластер.
Комментарии (18)
Sovigod
14.11.2024 09:03Обратный прокси‑сервер также может обрабатывать прекращение SSL и TLS, и вы можете проверять зашифрованный трафик, чтобы принимать более обоснованные решения по балансировке нагрузки.
Это у вас перевод такой? Источник не хотите указать?
Nullator
14.11.2024 09:03Или, учитывая картинку в заголовке, статья частично или полностью сгенерирована нейросетями
baldr
14.11.2024 09:03Просто удивительно какую автонарисованную ерунду показывают теперь на КДПВ к статьям. И уже все привыкли и считается что это нормально.
PrinceKorwin
14.11.2024 09:03Это удобный маркер, показывающий, что данную статью можно и пропустить. Максимум - сходить в комментарии, чтобы убедиться в правильности решения :)
slavius
14.11.2024 09:03Это точно:) их стало слишком много:(
Но я отключил и лишился этого преимущества.
slavius
14.11.2024 09:03Было на хабре правило для uBlock для скрытия КДПВ
! Скрыть КДПВ в заголовках статей habr.com##.tm-article-snippet__cover habr.com##.tm-article-snippet .tm-article-body img
atues
14.11.2024 09:03Первый пример (посещение медцентра) образчик идиотизма. Как можно сделать флюорографию, сдать анализы крови, проверить сердце и т.п. не взаимодействуя с медперсоналом учреждения? Помощник, что-ли, сдаст и пройдет? Ну-ну, желаю здоровья, но если что - вы сами этого хотели
naslou1
14.11.2024 09:03Первый пример описывает человека, который планирует проверить свое здоровье в большой клинике и не хочет сам взаимодействовать с медперсоналом. Что в этом странного, не понимаю. Диагностика своего здоровья (чек-ап) включает максимум два-три очного посещения врача, который по результатам анализов вам что-то там расскажет. А в остальном, надо: 1. обзвонить, списаться с администраторами и записаться на анализы, тесты, МРТ, КТ, при этом запланировав это все в нужное время - зачем это делать самому, если есть помощник, или мама/жена - она же и помощник у некоторых?)) 2. Поехать в диагностический центр (заказать такси или самому рулить) - рулить или заказать авто может и помощник, зачем самому заморачиваться. 3. Пройти все анализы - все взаимодействие тут сводится к протягиванию руки для забора крови, отнести всякие баночки с туалетными делами (кто-то может и стесняться это делать самостоятельно), положить свое тело в аппарат МРТ, повернуть туда-сюда и прочая ерунда, тут даже общаться не нужно кроме банального приветствия и пару коротких фраз. 4. Все результаты получаешь на мыло. И если надо идешь к профильному врачу. Хотя и это не всегда надо. Многое можно уточнить по переписке - и тут тоже помощник поможет. То есть из всех этих пунктов реально самому надо чисто прийти на анализы и может поговорить с врачом. А это может быть один единственный врач, которого человек знает сто лет в обед и ему комфортно.. так минимально общаться с людьми.
Не вижу в первом примере каких-то противоречий.
unstopppable
14.11.2024 09:03Да норм, администратор направляет тебя к конкретному врачу, чтобы ты вдруг к гинекологу случайно не зашел, например=)
Kil1J0y
14.11.2024 09:03Эм. "На обратном прокси‑сервере вы можете настроить более сложную логику маршрутизации на основе файлов cookie, URL, заголовков запроса" а теперь читаем документацию по haproxy, там все это есть а это и балансировщик и прокси
TheStazis
14.11.2024 09:03И такие в сбере инженеры? У которых Ingress контроллер это прокси. А ничего что контроллер вообще не трогает трафик? Он деплоит либо прокси (nginx, traefik, cillium etc), либо лоад балансер в облаке (aws alb ingress controller)
ppalashnenkoff
14.11.2024 09:03Закинули в AI видео из ютуба, изменили пример и радуются... Не позорились бы сбер
Akina
Помнится, когда-то давно, объясняя кому-то (не помню кому даже) разницу между прямым и обратным прокси, просто сказал что-то типа того, что "прямой - это когда сегмент доверия находится между клиентом и прокси, а обратный - когда между прокси и сервером". Конечно, на очевидный вопрос "а если такого сегмента нет" ответил, что нечего пользоваться проксёй, которой ты не доверяешь... это насчёт разницы.
Что же до балансировщика - то это просто распределитель однотипных задач по исполнителям. Если пользоваться аналогией с клиникой, то обратный прокси, приняв запрос клиента, смотрит, что ему надо, и в соответствующее место перенаправит. Как медсестра на стойке у входа. Зубы? к стоматологам.. Диспансеризация? к терапевту.. и так далее. А балансировщик - раскидывает задачи по точкам, где они могут быть выполнены. Медсестра на входе в отделение стоматологии - она смотрит, кто наиболее свободен, и соответственно направляет пациента. Иванов? лечит.. Петров? не, он хирург.. Сидоров? сидит, никого у него нет - вот и идите к нему.
Балансировщик может стоять и до обратной прокси, и после, и быть встроенным в неё, а ещё их может быть и несколько по мере прохождения запроса-ответа.
pae174
Прямой прокси это когда один или малое количество клиентов ходят через него на много самых разных сайтов. Такой прокси эксплуатируется в интересах клиентов, настраивается на их стороне, а админы самых разных сайтов об этом прокси вообще не подозревают.
Обратный прокси это когда большое количество клиентов ходят через него на один или малое количество сайтов. Такой прокси эксплуатируется в интересах владельца этих сайтов, настраивается на их стороне, и посетители сайтов о нем вообще не подозревают.
phikus
Это объяснение для гуманитариев, на самом деле, тип прокси не зависит от количества участников
Для технарей надо читать про тип прокси (TCP/HTTP/SOCKS), метод CONNECT, и прочие скучные штуки, о которых в статье к сожалению ни слова...
ITDiver77
Хм, 10000 это 1 или малое количество клиентов? А 50000? А 50?
Если за обратным ресурсом стоят непопулярные серваки, на которые ходят 5000 пользователей, он становится прямым?)) Или если через прямой ходит 5000 пользователей, он становится обратным?)) В статье достаточно понятно же расписано, к чему такой неуместный комментарий-пояснение?