Получение IP-адреса организации из балансировщика нагрузки

есть ли способ получить исходный IP-адрес пользователя из HTTP-балансировки нагрузки w / GCloud? В настоящее время мы используем только балансировку сетевой нагрузки и должны перейти на балансировщик кросс-региона, хотя нам нужен IP-адрес пользователя для соответствия и ведения журнала.

Он проходит в заголовке или что-то в этом роде?

Спасибо ~Z

3 ответов


документация (https://cloud.google.com/compute/docs/load-balancing/http/) говорит, что это первый IP-адрес заголовка X-Forwarded-For.

  X-Forwarded-For: <client IP(s)>, <global forwarding rule external IP>

Ok, поэтому после копания заголовков и других вещей я нашел следующий заголовок, который передает исходный IP и IP для пользователя.

$_SERVER['HTTP_X_FORWARDED_FOR']

вам нужно будет разделить его на ',' и взять первую часть строки. Это IP-адрес пользователя, который выталкивается Google Cloud HTTP Balancer.


Если вы уверены, что не запускаете какой-либо другой прокси (который добавляет дополнительные IP-адреса в X-Forwarded-For) за Google Cloud Balancing, вы можете получить предпоследний IP-адрес от X-Forwarded-For как немедленный IP-адрес клиента. Или даже если у вас есть прокси, но вы знаете точное количество дополнительных IP-адресов, которые будут добавлены, вы также можете добавить их в учетную запись.

от https://cloud.google.com/compute/docs/load-balancing/http/#components:

X-Forwarded-For: <unverified IP(s)>, <immediate client IP>, <global forwarding rule external IP>, <proxies running in GCP> (requests only)

только <immediate client IP> и <global forwarding rule external IP> записи предоставляются балансировщиком нагрузки. Все остальные записи в список передается без проверки.

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