Я строю свой собственный балансировщик нагрузки в C++. Но мне не хватает фундаментальных знаний о том, как запросы / ответы протекают в такой конфигурации маршрутизации. Предположим, у меня есть приложение на www.application.com и что DNS возвращает ip-адрес балансировщика нагрузки по запросу. IP клиента является client_ip один Balancer является balancer_ip и сервера - server_ip Итак, вот последовательность пакетов, сгенерированных в сети:

1) Первый пакет генерируется клиентом, запрашивающим балансировщик нагрузки:

+-----------+-------------+---------+
|  Source   | Destination | Request |
+-----------+-------------+---------+
| client_ip | balancer_ip | /hello  |
+-----------+-------------+---------+

2) Второй генерируется балансировщиком, который отправляет запрос на сервер и помещает client_ip в заголовок X-Forwarded-For :

+-------------+-------------+---------+-----------------+
|   Source    | Destination | Request | X-Forwarded-For |
+-------------+-------------+---------+-----------------+
| balancer_ip | server_ip   | /hello  | client_ip       |
+-------------+-------------+---------+-----------------+

3) Сервер получает запрос и возвращает ответ на балансировщик нагрузки. X-Forwarded-For остается прежним.

+-----------+-------------+------------------+-----------------+
|  Source   | Destination |     Response     | X-Forwarded-For |
+-----------+-------------+------------------+-----------------+
| server_ip | balancer_ip | response_message | client_ip       |
+-----------+-------------+------------------+-----------------+

4) Balancer получает ответ от сервера и создает свой собственный ответ обратно клиенту, беря ip-адрес клиента из заголовка X-Forwarded-For и помещая его в место назначения:

+-------------+-------------+------------------+
|   Source    | Destination |     Response     |
+-------------+-------------+------------------+
| balancer_ip | client_ip   | response_message |
+-------------+-------------+------------------+

Предположим, что все коммуникации выполняются в HTTP. Это правильный способ выполнения перенаправлений между клиентом - балансировщик нагрузки - сервер? Я просмотрел стандартные поля запроса / ответа, а X-Forwarded-For не было в списке стандартных и нестандартных ответов. Также, если это правильный путь, не будут ли такие популярные фреймворки, как Spring, Django, Node.js, отбрасывать заголовок X-Forwarded-For ?

0