Proxy-протокол

Что такое proxy

Прокси-сервер в общем случае -  (от англ. proxy — «представитель», «уполномоченный») - промежуточный сервер (комплекс программ) в компьютерных сетях, выполняющий роль посредника между пользователем и целевым сервером (при этом о посредничестве могут как знать, так и не знать обе стороны), позволяющий клиентам как выполнять косвенные запросы (принимая и передавая их через прокси-сервер) к другим сетевым службам, так и получать ответы. Сначала клиент подключается к прокси-серверу и запрашивает какой-либо ресурс (например, e-mail), расположенный на другом сервере. Затем прокси-сервер либо подключается к указанному серверу и получает ресурс у него, либо возвращает ресурс из собственного кэша (в случаях, если прокси имеет свой кэш). В некоторых случаях запрос клиента или ответ сервера может быть изменён прокси-сервером в определённых целях. Прокси-сервер позволяет защищать компьютер клиента от некоторых сетевых атак и помогает сохранять анонимность клиента, но также может использоваться мошенниками, для скрытия адреса сайта, уличённого в мошенничестве, изменения содержимого целевого сайта (подмена), а также перехвата запросов самого пользователя.

Зачем он нужен в k8s?

В общем случае proxy-серверы скрывают настоящий IP пользователя, из-за чего становится невозможно определить, например, из какой страны он пришел, и соответственно, интерфейс на каком языке ему отобразить. В случае с HTTP эта проблема давно решена путем проставления заголовков с IP пользователя. Но что делать при использовании других протоколов? Для решения именно этой проблемы разработчиками HAProxy и был придуман proxy protocol.

Логика работы 

  1. - пакет приходит на *выбранный порт*.
  2. - пакет проксируется на *другой выбранный порт*.
  3. - пакет приходит в Nginx.
  4. - Nginx доставляет пакет в приложение клиента с сохранением source IP.

Создание и настройка

В разделе личного кабинета "Балансировщики нагрузки" нажмите "Добавить"

В окне создания нового балансировщика нажмите "Добавить правило" и выберите "TCP" - "PROXY". Также по желанию выберите порты, инстансы и вес (про вес балансировщиков можно почитать тут). 

Нажмите "Следующий шаг" и выберите параметры проверки доступности:

Подождите несколько минут:

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

Надо ли Nginx настраивать отдельно, после добавления балансировщика?

Если Nginx установлен через панель управления MCS - то нет.

Также см. документацию.

Также см. статью "Настройки балансировщика".