Получение 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-адрес, который попадает в балансировщик нагрузки.