AWS CloudFront и ELB: запросы не доходят до серверной части

#amazon-web-services #amazon-cloudfront #amazon-elb

Вопрос:

Попадешь в довольно странные неприятности. У вас есть дистрибутив Cloudfront с двумя источниками: S3 и ELB.

Я установил поведение по умолчанию () и Пользовательский (/тестовый запрос).

На стороне ELB есть правило для пересылки запроса с моего домена на определенный сервер. Домен также добавлен в качестве псевдонима для распространения cloudfront.

Но в любое время, когда я пытаюсь дотянуться https://my.domain/test-request У меня… ничего нет. Похоже, что все запросы идут на содержимое S3 и никогда не доходят до бэкэнда, который мне нужен.

Я уже играл с вариантами поведения, прочитал много учебных пособий, но все равно не повезло.

Я не ищу четких ответов, но, по крайней мере, мне нужно направление моих исследований.

Ответ №1:

Я предполагаю, что ваша конфигурация распространения Cloudfront

  • /тест-запрос на ваш ELB в качестве первого приоритета
  • По умолчанию (*) для вашего S3 в качестве универсального
  • мой.домен правильно сопоставлен с CNAME вашего Cloudfront

Когда вы попытаетесь получить доступ к my.domain/тестовому запросу, Cloudfront будет соответствовать вашему поведению кэша и перенаправит его на ваш ELB вместе с путем /тестовым запросом.

Пожалуйста, обратите внимание, что он НЕ удаляет путь /test-запроса из вашего исходного запроса.

Затем ваш ELB пересылает исходный запрос на сервер приложений, используя путь /тестовый запрос.

Таким образом, вполне вероятно, что ваше приложение не предоставляет никаких ресурсов или API в соответствии с запросом пути /теста, и в результате запрос завершается неудачно.

Кроме того, поскольку вы находитесь в этой теме, пожалуйста, обратите внимание, что по умолчанию Cloudfront не пересылает параметры запроса или файлы cookie браузера в ваш пользовательский источник, который в вашем случае является ELB. Если вы хотите захватить их, вам необходимо правильно настроить поведение кэша.

ReFS:

  1. https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesPathPattern
  2. https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/distribution-web-values-specify.html#DownloadDistValuesQueryString