Скидки до 20% + 2-ая профессия бесплатно и подарки на 50 000₽

Главная | Все статьи | Код

Защищает от хакерских атак и повышает производительность: что такое обратный прокси

Время чтения статьи ~5 минут 17
Защищает от хакерских атак и повышает производительность: что такое обратный ... главное изображение

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

Это адаптированный перевод статьи «What is a reverse proxy? | Proxy servers explained» из блога компании Cloudflare.

Что такое обратный прокси

Обратный прокси (реверс-прокси) — это сервер, который находится перед веб-серверами и пересылает запросы от клиента (например, от браузера) на эти веб-серверы. Чтобы лучше понять, как работает обратный прокси и какие преимущества он имеет, определим, что такое прокси-сервер.

Бесплатные курсы по программированию в Хекслете
  • Освойте азы современных языков программирования
  • Изучите работу с Git и командной строкой
  • Выберите себе профессию или улучшите навыки
Выбрать курс

Что такое прямой прокси

Прямой прокси или просто прокси — это сервер, который находится перед группой клиентских компьютеров. Когда они отправляют запросы к сайтам и сервисам в интернете, прокси-сервер выступает в роли посредника: перехватывает запросы, а затем связывается с веб-серверами от имени клиентов.

Вот так работа прямого прокси выглядит на схеме:

  • A — домашний компьютер пользователя
  • B — прямой прокси-сервер
  • C — сервер веб-сайта (где хранятся данные веб-сайта)

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

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

  • Использование прокси позволяет избежать ограничений на просмотр контента, установленных в отдельно взятой стране или для компьютеров внутри организации. Некоторые правительства, школы и компании используют брандмауэры, чтобы предоставить своим пользователям доступ только к ограниченной версии интернета. Прямой прокси помогает обойти такие ограничения: он позволяет подключиться к промежуточному серверу, а не к запрещенному сайту.

  • Другая сторона прокси — возможность ограничить доступ к тому или иному контенту. Пользователь в такой сети (например, школьной) сначала подключается к промежуточному серверу, а тот, в свою очередь, не принимает ответы от запрещенных сайтов (например, от Facebook и других сайтов социальных сетей).

  • Технология позволяет сохранять анонимность. Например, при использовании прокси настоящий IP-адрес автора комментария на форуме будет сложнее отследить. Вместо IP-адреса пользователя будет виден IP-адрес прокси-сервера.

Чем отличается обратный прокси?

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

Читайте также: Как сохранять фокус на протяжении всего обучения: советы от Хекслета

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

На схеме эта разница выглядит так:

  • D — домашний компьютер пользователя
  • E — обратный прокси-сервер
  • F — сервер веб-сайта

В обычной ситуации все запросы от D отправляются напрямую к F и наоборот.  С обратным прокси-сервером все запросы от D будут направляться непосредственно в E, а E будет отправлять свои запросы и получать ответы от F. E затем передаст соответствующие ответы D.

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

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

  • Защита от атак. Обратный прокси позволяет исходным серверам не раскрывать свои IP адреса клиентам. Это значительно затрудняет проведение DDoS-атак: все запросы можно пропускать через прокси-сервер с более надежной системой защиты и большей мощностью по сравнению с основным сервером. Например, через сервер Cloudflare.

  • Глобальная балансировка нагрузки на сервер (GSLB). Этот подход предполагает распределение сайта по нескольким серверам, которые физически расположенны в разных странах мира. Обратный прокси отправляет запрос пользователя на сервер, который географически находится ближе к нему. Это уменьшает расстояние, которые необходимо преодолевать запросам и ответам, сводя к минимуму время загрузки.

  • Кэширование. Обратный прокси-сервер также может кэшировать содержимое запроса и таким образом повышать производительность. Например, если пользователь из Парижа заходит на сайт, сервера которого расположены в Лос-Анджелесе, он может сделать это через локальный прокси в Париже, который затем взаимодействует с исходным сервером в Лос-Анджелесе. Прокси-сервер кэширует (или временно сохраняет) данные ответа, а следующие пользователи из Парижа увидят кэшированную локально версию данных, поскольку кэш будет на парижском реверс-прокси. Это существенно повысит производительность и время загрузки данных.

  • SSL-шифрование. Шифрование и дешифрование сообщений (SSL или TLS) для каждого клиента по отдельности стоит дорого с точки зрения вычислений для исходного сервера. Обратный прокси-сервер можно настроить для расшифровки всех входящих запросов и шифрования всех исходящих ответов, освободив ресурсы на исходном сервере.

Понять, как использовать реверс-прокси на практике, можно на интенсиве по DevOps на Хекслете. На нем студенты создают инфраструктуру, которая содержит и обратный прокси, и несколько серверов.

Бесплатные курсы по программированию в Хекслете
  • Освойте азы современных языков программирования
  • Изучите работу с Git и командной строкой
  • Выберите себе профессию или улучшите навыки
Выбрать курс

Аватар пользователя Oleg Sabitov
Oleg Sabitov 21 апреля 2022
17
Похожие статьи
Рекомендуемые программы
профессия
Верстка на HTML5 и CSS3, Программирование на JavaScript в браузере, разработка клиентских приложений используя React
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Python, Разработка веб-приложений и сервисов используя Django, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Тестирование веб-приложений, чек-листы и тест-кейсы, этапы тестирования, DevTools, Postman, SQL, Git, HTTP/HTTPS, API
4 месяца
с нуля
Старт 26 декабря
профессия
Программирование на Java, Разработка веб-приложений и микросервисов используя Spring Boot, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Google таблицы, SQL, Python, Superset, Tableau, Pandas, визуализация данных, Anaconda, Jupyter Notebook, A/B-тесты, ROI
9 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на PHP, Разработка веб-приложений и сервисов используя Laravel, проектирование и реализация REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на Ruby, Разработка веб-приложений и сервисов используя Rails, проектирование и реализация REST API
5 месяцев
c опытом
Старт 26 декабря
профессия
Программирование на JavaScript в браузере и на сервере (Node.js), разработка бекендов на Fastify и фронтенда на React
16 месяцев
с нуля
Старт 26 декабря
профессия
Программирование на JavaScript, разработка веб-приложений, bff и сервисов используя Fastify, проектирование REST API
10 месяцев
с нуля
Старт 26 декабря
профессия
новый
Git, JavaScript, Playwright, бэкенд-тесты, юнит-тесты, API-тесты, UI-тесты, Github Actions, HTTP/HTTPS, API, Docker, SQL
8 месяцев
c опытом
Старт 26 декабря