Сохранение IP-адреса клиента с при развертывании приложения за балансировщиком нагрузки
Когда балансировщик нагрузки или прокси-сервер не могут сохранить исходный IP-адрес клиента, он может переписать
IP-адрес или использовать свой собственный IP-адрес для целей маршрутизации. В этом сценарии широко используются
обычные методы, такие как вставка исходного IP-адреса в заголовки запросов (например, X-Forwarded-For
) или
использование протокола прокси, чтобы гарантировать, что серверные службы по-прежнему имеют доступ к этой информации.
Application Load Balancer работает на 7 уровне и
используют HTTP-заголовок X-Forwarded-For
для передачи
IP-адреса клиента серверу. Но что делать если вы работаете на уровне 3 и не можете использовать HTTP-заголовки?
В этом случае нужно учитывать, что Network Load Balancer (NLB)
и Application Load Balancer (ALB) по-разному обрабатывают L3 трафик. Об этих различиях и пойдет речь в этой статье.
В качестве примера мы рассмотрим nginx. Мы настроим его на прием запросов с NLB и ALB в L3 и L7 вариантах. Все примеры развертывания описаны в Terraform рецепте и вы сможете легко самостоятельно проверить их.