2015-01-03 3 views
0

У меня есть webapp, который использует много изображений, которые кэшируются через CloudFront. Некоторые пользователи жалуются на то, что время загрузки мучительно медленное, поэтому я хочу создать страницу диагностики на сайте, которая проведет проверку скорости, загрузив несколько изображений и сообщив о времени. Я также хочу сообщить IP-адрес пользователей (который я могу легко получить из php при загрузке страницы), но я также хочу показать IP-адрес, который они получают для сервера облачных вычислений.Amazon cloudfront IP-разрешение от клиента

Я знаю, что если я бегу:

dig subdomain.cloudfront.net 

я получаю несколько IP-адресов. Если приложение (браузер, приложение QT, мобильное приложение) работает с одновременными подключениями к subdomain.cloudfront.net, всегда ли он использует первый IP-адрес первым и использует остальные только в случае его отказа?

И есть ли какой-либо способ из браузера, чтобы я мог получить эти IP-адреса, как они есть из клиентской системы пользователей? Я понимаю, что они получат другой список IP-адресов на основе их IP-адреса.

Если это невозможно в браузере, есть ли какой-либо запрос, который я мог бы отправить на сервер облачной защиты, который будет включать его IP-адрес в ответ?

ответ

0

это всегда использовать первый IP первого

Большинство современных DNS резольверов и авторитетные сервера будет рандомизации порядка IP-адреса - точнее, множество A записей для данного доменного имени ,

Итак, «первый IP» действительно не детерминирован вообще.

и использовать другие, только если это не удается?

Очевидно, что это очень зависит от браузера. Most modern browsers do handle it, повторив другие IP-адреса. Я бы не стал на это рассчитывать.

есть ли какой-либо способ из браузера, чтобы я мог получать эти IP-адреса так, как они поступают из клиентской системы пользователей?

С панели сети Chrome devtools вы можете увидеть адрес, к которому подключен браузер, в поле «Удаленный адрес» запроса. Тем не менее, я не знаю, как можно получить доступ к этому из Javascript на странице.

Я понимаю, что они получат другой список IP-адресов на основе их IP-адреса.

Да.

Есть ли какой-либо запрос, который я мог бы отправить на сервер облачного доступа, который будет включать его IP-адрес в ответ?

Не то, чтобы я знал. Однако, возможно, вы сможете обработать заголовок ответа Via или X-Amz-Cf-Id? При беглом взгляде, оба они непонятны мне после декодирования hex или base64.

Таким образом, существует трюк, который вы могли бы использовать, то есть вы могли бы настроить префикс URL в своем дистрибутиве, который перенаправляет запросы на ваш сервер с PHP. Затем вы указываете своим пользователям URL-адрес, который приведет к отправке запроса на ваш PHP-скрипт. В своем скрипте PHP рассмотрите заголовок X-Forwarded-For, который должен содержать IP-адрес Cloudfront.

Смежные вопросы