У меня есть корзина 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, я постараюсь уточнить позже по мере необходимости, но здесь довольно много шагов:
Примечание: это имя хоста должно быть добавлено в 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 с предыдущего шага может занять некоторое время.
Вам потребуется следовать этому руководству, чтобы скопировать все ресурсы из старого сегмента в новый. Руководство достаточно подробное, чтобы следовать ему, чтобы скопировать все ваши ресурсы в новое ведро, хотя, если у вас очень большое ведро, вы можете столкнуться с проблемами здесь.
Убедитесь, что ожидаемые ресурсы находятся по адресу http://static.example.com/old_image_path.jpg
.
Этот шаг позволит подключить ваш домен к 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 включен.
Это относится к исходному вопросу. Все ссылки на изображения должны будут переключиться со старого сегмента s3 на новое имя хоста в Cloudflare, static.example.com
.
Возможно, вы захотите изменить параметры кеша, чтобы сэкономить трафик. Есть два основных способа добиться этого. Cloudflare будет использовать заголовок Cache-Control, чтобы определить, как долго кэшировать. Вы можете массово обновить заголовок управления кэшем S3 в соответствии с этими инструкциями . Кроме того, Cloudflare дает вам возможность переопределить этот заголовок с помощью параметра «Кэширование» > «Конфигурация» > «TTL кэша браузера». Это эффективно изменит значение Cache-Control: max-age на большее из двух. Чем больше TTL, тем дольше изображения будут кэшироваться в браузерах пользователей, но также дольше будут храниться изображения в краевом кеше Cloudflare, что снизит нагрузку на корзину S3.
Хотя cloudflare действительно предлагает кажущуюся бесплатную полосу пропускания, их щедрость имеет пределы. См. Раздел 2.8 условий Cloudflare. Похоже, что вышеупомянутый веб-сайт, вероятно, нарушает эти условия, и если Cloudflare решит, что вы используете слишком много, возможно, ваш сайт будет удален. В этот момент вам нужно будет перейти в режим «только DNS» и вернуться к оплате S3 или договориться с cloudflare о некоторых условиях и оплате, чтобы продолжить использовать пропускную способность Cloudflare.