Назад | Перейти на главную страницу

Будет ли геолокационная маршрутизация Route 53 за CloudFront работать с пользователями или на периферии?

Если у меня настроен CloudFront с исходным адресом в Route 53, а маршрутизация геолокации для записи в Route 53, будет ли Route 53 выполнять геолокацию на основе IP-адреса пограничного местоположения CloudFront или IP-адреса конечного пользователя?

Поиск DNS-сервера для исходного сервера выполняется на «задней стороне» CloudFront и будет основан на периферийном местоположении CloudFront и не может использоваться для проверки географического местоположения зрителя.

(Даже если бы это было каким-то образом возможно, это все равно не сработало бы, потому что CloudFront не знал бы подходящих критериев для повторного использования кешированного ответа для других зрителей, которые могут находиться в разных странах, но попадают в одно и то же пограничное местоположение.)

Что вы можете сделать, так это выбрать исходный сервер на основе страны зрителя, настроив CloudFront для внесения в белый список CloudFront-Viewer-Country заголовок запроса, а затем с помощью триггера Lambda @ Edge Origin Request изменить имя исходного домена и, возможно, Host заголовок запроса, основанный на обнаруженной стране.

Триггер Origin Request срабатывает только при промахах в кеше, поэтому при попадании в кеш триггер не должен срабатывать - ответ подается из кеша. И ответ будет правильным, потому что добавление заголовка в белый список (например, CloudFront-Viewer-Country) означает, что CloudFront начинает обрабатывать этот заголовок как часть ключа кеширования, поэтому CloudFront хранит отдельные / независимые кэшированные копии одного и того же ресурса на основе различных значений, которые он видит для этого заголовка, и кешированный ответ не будет обслуживаться, если это не значение заголовка совпадает (или его нет - это отдельная кешированная версия). Таким образом, попадание в кеш для данной страницы требует, чтобы CloudFront-Viewer-Country из кешированного ответа соответствует новому запросу. Короче говоря, CloudFront делает все правильно в отношении кеша в такой конфигурации.

Видеть Пример: использование триггера Origin-Request для изменения имени исходного домена на основе заголовка страны из Руководство разработчика Amazon CloudFront для простого примера кода для такого триггера. Настройте его в соответствии с вашими бизнес-правилами.


¹ Тем не менее, его можно использовать для маршрутизации на основе задержки от CloudFront к исходному серверу, поскольку маршрутизация на основе задержки заключается в выборе ответа DNS, соответствующего географически ближайшей цели, но не на основе геополитических границ. Оптимальной целью в этом случае была бы ближайшая к краю, а не к зрителю, хотя на практике они очень часто были бы одинаковыми, поскольку край выбирался на передней стороне в зависимости от близости к наблюдателю.