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

Как указать записи route53 в корзину для * любого * поддомена?

У меня ведро S3 называется www.mybucket.com У меня есть запись A: name = www.mybucket.com. Он хорошо отвечает с index.html, содержащимся в корзине.

Теперь я хочу отправить любой поддомен к этому сегменту.

Сначала я попробовал с конкретными поддоменами:

больше нет идей ...

Конечной целью будет перенаправление всех поддоменов в корзину. www.mybucket.com. Но также будет хороша возможность отправлять разные поддомены в разные корзины ...

Я не думаю, что это возможно. Это работает так: клиент решает www.mybucket.com к общей конечной точке S3, которая обслуживает миллионы других сегментов. Затем он отправляет HTTP-заголовок хоста Host: www.mybucket.com. Затем служба S3 соответствует заголовку хоста www.mybucket.com к имени вашего ведра www.mybucket.com и служит index.html файл оттуда. Вот как это работает.

Даже если вы сделаете A / ALIAS / CNAME *.mybucket.com указывая на www.mybucket.com это в конце по-прежнему разрешается в общий адрес S3 - так устроен DNS, ему не нужны промежуточные имена.

Теперь, если вы попытаетесь получить доступ xyz.mybucket.com ваш браузер отправляет заголовок Host Host: xyz.mybucket.com -> S3 не может сопоставить его ни с одним существующим ведром -> вы получаете NoSuchBucket ошибка.

Так что нет, так нельзя.


Возможное решение: вы можете использовать обратный прокси например на EC2 или в контейнере Fargate и точке *.mybucket.com на это имя хоста прокси. Затем прокси отправит серверный запрос на S3 и предоставит файл клиенту. Обратной стороной является то, что все должно проходить через ваш прокси, жертвуя высокая доступность S3 API.

Надеюсь, это поможет :)