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

Добавление CloudFlare в корзину S3

У меня есть корзина Amazon S3, содержащая тысячи файлов JPG и подобных медиаресурсов. (Это хранилище для моих форумов.) Я не размещаю в этой корзине статический сайт (без HTML любого вида), и он полностью открыт для чтения публикой (поэтому программа форума может просто ссылаться на изображения).

Однако я плачу на S3 за пропускную способность. Кто-то сказал, что я должен прикрепить CloudFlare перед ведром S3, и это сэкономит много долларов. Прохладно! Но я не понимаю процесса. CloudFlare, похоже, хочет взять на себя весь DNS для моего основного сайта, чего я не хочу.

я просто хотел https://my-bucket.s3.us-east-1.amazonaws.com для кэширования / CDN с помощью CloudFlare. И, очевидно, я не могу изменить DNS Amazon ;-)

Я не думаю, что это будет сложно, но я не могу найти относительно простого объяснения того, как это правильно настроить. (Другими словами: мне не хватает «общей картины» / основных шагов.)

(Это немного освещено на сайте CloudFlare но меня смущают их инструкции, и мой вариант использования также отличается от того, о чем они говорят.)

Вот список шагов, которые вам необходимо предпринять, чтобы заставить Cloudflare работать с вашей корзиной S3, я постараюсь уточнить позже по мере необходимости, но здесь довольно много шагов:

Шаг 1. Настройте сегмент на основе домена

Примечание. Это имя хоста необходимо будет добавить в Cloudflare позже (на шаге 3), поэтому выбирайте его исходя из этого. Для обслуживания корзины необходимо будет использовать полное имя хоста, поэтому не выбирайте то, что уже используется. я буду использовать static.example.com для этого.

Войдите в S3 и создайте корзину с именем этого домена, вы захотите выбрать существующую корзину с вашими изображениями в качестве настроек копирования из корзины. Вы хотите, чтобы сегмент находился в том же регионе, что и существующий сегмент для шага 2:

Добавить тестовое изображение image.jpg в корзину с общедоступными разрешениями на просмотр, загрузите его в корень.

CNAME запись DNS имени хоста (static.example.com) до конечной точки вашей корзины Amazon. Обычно это имя корзины (в данном случае static.example.com) плюс стандартный URL-адрес S3, включая регион. В нашем примере это будет: static.example.com.s3-us-west-2.amazonaws.com, но заменить us-west-2 с вашим фактическим регионом.

Теперь посмотрим, доступен ли тестовый ресурс по адресу http://static.example.com/image.jpg, обязательно используйте http, потому что https здесь не работает. Распространение DNS из вышеуказанного шага может занять некоторое время.

Шаг 2. Скопируйте все ресурсы из старого ведра

Вам нужно будет следовать это руководство чтобы скопировать все ресурсы из старого ведра в новое. Руководство достаточно подробное, чтобы копировать все ваши ресурсы в новую корзину, хотя, если у вас очень большая корзина, здесь могут возникнуть проблемы.

Убедитесь, что ожидаемые ресурсы находятся на http://static.example.com/old_image_path.jpg.

Шаг 3. Зарегистрируйтесь и настройте Cloudflare

Этот шаг предназначен для включения вашего домена в Cloudflare. Cloudflare имеет набор инструкций для этого. Если у вас есть какие-либо существующие записи, убедитесь, что они есть в списке для подключения. Одна запись, которая должна быть там, - это static.example.com -> static.example.com.s3-us-west-2.amazonaws.com CNAME, настроенный на шаге 1.

После настройки убедитесь, что запись DNS находится в режиме «оранжевого облака» A.K.A. проксируется (и кэшируется). Сделайте тестовый запрос еще раз, начиная с шага 2, но посмотрите, есть ли на изображении признаки того, что оно исходит от серверов Cloudflare. Это будет включать Server: cloudflare заголовок, а также cf-cache-status заголовок, который указывает, выполняете ли вы извлечение из кеша Cloudflare и экономите ли пропускную способность. Это может занять некоторое время, поскольку на предыдущем шаге для распространения требовалось изменение DNS.

На этом этапе вы должны иметь возможность использовать https в запросах, но если нет, перейдите на вкладку SSL / TLS> Edge Certificates в Cloudflare и убедитесь, что универсальный SSL включен.

Шаг 4. Переключите ссылки на изображения

Это относится к исходному вопросу. Все ссылки на изображения должны быть переключены со старого ведра s3 на новое имя хоста в Cloudflare, static.example.com.

Шаг 5. Измените настройки кеша

Вы можете изменить настройки кэша, чтобы сэкономить трафик. Этого можно добиться двумя основными способами. Cloudflare будет использовать заголовок Cache-Control, чтобы определить, как определить, сколько времени нужно кэшировать. Вы можете массово обновить заголовок управления кешем S3 согласно этим инструкциям. Кроме того, Cloudflare дает вам возможность переопределить этот заголовок с помощью параметра Caching> Configuration> Browser Cache TTL. Это эффективно изменит значение Cache-Control: max-age на большее из двух. Более длительный TTL будет держать изображения в кеше дольше в браузерах пользователей, но также дольше сохранит изображения в пограничном кеше Cloudflare и уменьшит нагрузку из вашей корзины S3.

Отказ от ответственности:

Хотя cloudflare действительно предлагает, казалось бы, бесплатную пропускную способность, их щедрость имеет предел. Пожалуйста, обратитесь к Раздел 2.8 условий Cloudflare. Похоже, что вышеупомянутый веб-сайт, вероятно, нарушает эти условия, и если Cloudflare решит, что вы используете слишком много, возможно, ваш сайт будет удален. На этом этапе вам придется перейти в режим только DNS и вернуться к оплате за S3 или договориться с Cloudflare о некоторых условиях и оплате, чтобы продолжить использование пропускной способности Cloudflare.