Как правило, каждый прокси-сервер "hop" добавляет IP-адрес клиента к X-Forwarded-For, хотя это нестандартный заголовок, поэтому все, что ниже, зависит от вашей CDN, реализующей его так же, как и все остальные:)
Несколько примеров - во-первых, браузер, подключающийся напрямую к CDN:
Browser -> CDN -> Squid -> App
1.1.1.1 2.2.2.2 3.3.3.3 10.1.2.3
В этом случае приложение будет видеть X-Forwarded-For: 1.1.1.1, 2.2.2.2 . Просто - браузер - самая левая запись. Но рассмотрим случай, когда браузер находится за ISP или корпоративным прокси:
Browser -> Proxy -> CDN -> Squid -> App
192.168.0.25 4.5.6.7 2.2.2.2 3.3.3.3 10.1.2.3
В зависимости от конфигурации прокси приложение может видеть любое из:
- X-Forwarded-For: 4.5.6.7, 2.2.2.2 (если прокси-сервер скрывает внутренний IP)
- X-Forwarded-For: 192.168.0.25, 4.5.6.7, 2.2.2.2 (если прокси-сервер перенаправляет внутренний IP-адрес)
- X-Forwarded-For: 9.8.7.6, 4.5.6.7, 2.2.2.2 (если прокси-сервер подделывает внутренний IP)
Как видите, вы не можете полагаться на крайнюю левую запись, содержащую полезный адрес браузера. Вместо этого начинайте справа и работайте в обратном направлении, пока не найдете адрес, который не является Squid или CDN - это будет вашим лучшим предположением по адресу браузера (а также окажется удаленным адресом, который вы увидите, если бы он был нет CDN или Squid).