Что такое CDN и почему компании их используют?
Веб-агентство » Цифровые новости » Что такое обратный прокси и как он работает?

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

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

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

Стандартный прокси, называемый Forward Proxy, представляет собой сервер, через который маршрутизируется соединение пользователя. Во многом это похоже на простую VPN, которая находится перед вашим интернет-соединением. Распространенным примером являются VPN, но они также включают в себя такие вещи, как школьные брандмауэры, которые могут блокировать доступ к определенному контенту.

Обратный прокси работает немного по-другому. Это внутренний инструмент, используемый системными администраторами. Вместо прямого подключения к веб-сайту, обслуживающему контент, обратный прокси-сервер, такой как NGINX, может располагаться посередине. Когда он получает запрос от пользователя, он пересылает или «проксирует» этот запрос на конечный сервер. Этот сервер называется «исходным сервером», потому что именно он отвечает на запросы.

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

Этот эффект имеет место и в обратном направлении. Исходный сервер не имеет прямого подключения к пользователю и будет видеть только кучу запросов от IP-адреса обратного прокси-сервера. Это может быть проблемой, но большинство прокси-сервисов, таких как NGINX, добавляют такие заголовки, как X-Forwarded-For на лету. Эти заголовки будут информировать исходный сервер о реальном IP-адресе клиента.

Для чего используются обратные прокси?

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

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

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

Это означает, что узким местом часто является исходный сервер, но с обратным прокси-сервером вы можете легко иметь несколько исходных серверов. Например, прокси может отправлять 50% запросов на один сервер и 50% на другой, что удваивает пропускную способность веб-сайта. Такие сервисы, как HAProxy, хорошо с этим справляются.

Это очень распространенный вариант использования, и большинство облачных провайдеров, таких как Amazon Web Services (AWS), предлагают балансировку нагрузки как услугу, поэтому вам не нужно настраивать ее самостоятельно. С помощью облачной автоматизации вы даже можете автоматически увеличивать количество исходных серверов в ответ на трафик — функция, называемая автоматическим масштабированием.

Балансировщики нагрузки, такие как Elastic Load Balancer от AWS, могут быть настроены на автоматическую перенастройку по мере того, как ваши исходные серверы поднимаются и выключаются, и все это стало возможным благодаря обратному прокси-серверу под капотом.

Кэширование

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

Например, эта статья, которую вы сейчас читаете, была предоставлена ​​WordPress, которому необходимо взаимодействовать с базой данных SQL для получения содержимого и метаданных статьи. Делать это для каждого обновления страницы расточительно, поскольку страница на самом деле не меняется. Таким образом, этот маршрут можно кэшировать, и обратный прокси-сервер просто отправит последний ответ следующему пользователю, вместо того, чтобы снова возиться с WordPress.

Выделенная сеть обратных прокси-серверов, кэширующих ваш контент, называется сетью доставки контента или CDN. CDN, такие как CloudFlare или Fastly, очень часто используются крупными веб-сайтами для ускорения глобальной доставки. Серверы по всему миру, которые кэшируют контент, называются «пограничными узлами», и их большое количество может сделать ваш сайт очень привлекательным.

Защита сети и конфиденциальность

Поскольку пользователь не знает, что стоит за обратным прокси-сервером, он не может легко атаковать исходные серверы напрямую. Фактически, обратные прокси-серверы обычно используются с исходными серверами в частных подсетях, что означает, что они не имеют входящего подключения к внешнему Интернету.

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

Это неотъемлемое доверие также может быть полезно при планировании вашей сети. Например, сервер API, взаимодействующий с базой данных, похож на обратный прокси-сервер. База данных знает, что она может доверять серверу API в частной подсети, и сервер API действует как брандмауэр для базы данных, разрешая только хорошие соединения через это-это.

Настраиваемый интерфейс

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

Например, NGINX может ограничивать запросы определенными маршрутами, что может помешать злоумышленникам делать тысячи запросов к исходным серверам с одного IP-адреса. Это не останавливает DDOS-атаки, но приятно иметь.

NGINX также может перенаправлять трафик с нескольких доменных имен с помощью настраиваемых «серверных» блоков. Например, он может отправлять запросы на example.com на исходный сервер, но отправьте api.example.com на ваш специальный сервер API, или files.example.com в ваше файловое хранилище и так далее. Каждый сервер может иметь свою конфигурацию и свои правила.

NGINX также может добавлять дополнительные функции к существующим исходным серверам, такие как централизованные сертификаты HTTPS и конфигурация заголовков.

Иногда просто полезно иметь NGINX на том же компьютере, что и другая локальная служба, просто для обслуживания контента этой службы. Например, веб-API ASP.NET используют внутренний веб-сервер под названием Kestrel, который хорошо отвечает на запросы, но не более того. Очень часто Kestrel запускают на частном порту и используют NGINX в качестве настраиваемого обратного прокси-сервера.

Централизованное ведение журнала

Это довольно просто, но большая часть вашего трафика проходит через один сервис, что упрощает проверку журналов. Журнал доступа NGINX содержит много полезной информации о вашем трафике, и хотя он не превосходит по возможностям такую ​​службу, как Google Analytics, это полезная информация.

★ ★ ★ ★ ★