Добавление 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 , но меня смущают их инструкции, и мой вариант использования также отличается от того, что они поговорим о.)

3
задан 17 July 2020 в 16:44
1 ответ

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

Шаг 1: Настройка ваша корзина на основе домена

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

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

Шаг 1.5 (необязательно): протестируйте личный домен без Cloudflare

Добавьте тестовое изображение 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 находится в режиме «оранжевого облака» AKA. проксируется (и кешируется). Снова сделайте тестовый запрос с шага 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 дает вам возможность переопределить этот заголовок с помощью параметра «Кэширование» > «Конфигурация» > «TTL кэша браузера». Это эффективно изменит значение Cache-Control: max-age на большее из двух. Чем больше TTL, тем дольше изображения будут кэшироваться в браузерах пользователей, но также дольше будут храниться изображения в краевом кеше Cloudflare, что снизит нагрузку на корзину S3.

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

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

8
ответ дан 19 July 2020 в 18:50

Теги

Похожие вопросы