Найти в Дзене
Kamnetanker

Прокси. Что? Зачем? Как?

Оглавление
Картиночка с проксями красивая, чтобы вы тапнули
Картиночка с проксями красивая, чтобы вы тапнули

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

Что?

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

Прокси делится на два вида: прямой и обратный.

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

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

Ниже на схеме изображены принципы работы прямого и обратного proxy серверов.

Схема устройства прямого и обратного прокси
Схема устройства прямого и обратного прокси

Зачем?

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

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

Как?

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

  • Wingate
  • DeleGate
  • SmallProxy
  • Pound
  • и д.р.

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

Ниже приведён пример конфигурации nginx для проксирования трафика к сервису example.com:

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

Пример реальной конфигурации

Решим задачу проксирования для условного домена example.com. Пусть у нас имеется 3 сервиса, которые должны быть доступны по некоторому белому адресу(10.0.0.2 например), который приобрела ваша организация. У вас поднято 3 сервера, как и завещалось по принципу: "На ноде сервиса больше одного не держи" © Йода.

В итоге мы имеем: 1 белый ip, задачу фильтрации трафика и 3 сервиса. Идельное решение в таком случае - поднятие proxy-сервера, который позволит нам:

  • Привнести горизонтальное масштабирование. Если в один момент нагрузка на одну ноду станет слишком большой, то достаточно будет добавить ещё одну ноду и сбалансировать нагрузку в конфигурации proxy-сервера.
  • Централизовано фильтровать трафик. Из-за того, что ваша сеть будет иметь одну единственную точку входа, будет крайне удобно организовать фильтрацию трафика именно в этой точке, а не фильтровать трафик на каждой ноде в отдельности.
  • Использовать лишь один белый ip. В наше время белый ip для организации дело затратное, поэтому рекомендуется избегать пложения таковых в рамках организации.

Ниже представлена получающаяся схема внутренней сети:

Схема "реальной" внутренней сети
Схема "реальной" внутренней сети

Здесь сеть 10.0.1.0 - является внутренней подсетью организации, которая недоступна из сети интернет напрямую, и через дефис указаны диапазоны ip адресов серверов, предоставляющих сервисы (service1-3). В результате получается следующий конфигурационный файл:

По факту на этом настройка proxy-сервера закончена и можно релизить. Однако, в данной конфигурации есть минус - всё в одном месте, лучше разделить конфигурацию на фалы service1.conf, service2.conf и service3.conf и создать service_base.conf, в котором, при добавлении новых сервисов просто менять необходимые параметры и подключать как serviceN.conf, просто откопировав конфиг.

Спасибо за внимание)

#nginx #proxy #configuration #прокси #сервер #пример