Подтвердить что ты не робот

Heroku + Rails4.2: настройка Cloudfront

Я пытаюсь настроить Cloudfront для моего приложения heroku. Документация, кажется, отсутствует, чтобы стоять независимо.

Ниже приведены шаги, которые я выполнил:

 1. Setup Cloudfront in AWS console
 2. Added cloudfront domain name to production.rb `config.action_controller.asset_host = 'XXXX.cloudfront.net'`
 3. Set `config.assets.compile = true` in production.rb
 4. Verified AWS_SECRET_ACCESS_KEY is correct in heroku config
 5. I have added `gem 'rails_12factor', group: :production`

Больше нет загрузки ресурсов. Любой шаг, который мне не хватает в настройке?


Update1:

В хром-отладчике ресурс правильно запрашивается у облачного облака из этого URL-адреса: http://XXXXX.cloudfront.net/assets/application-22c7c249df1a24541d86603b0715eefe.css

Однако в заголовке запроса см. < <21 > . Мне интересно, есть ли у меня цикл перенаправления и как его можно отлаживать.

Update2

Спасибо всем за предложения. Дополнительная информация:

  • Когда я пытаюсь загрузить актив из своего приложения, я получаю перенаправление на домашнюю страницу в браузере, но с помощью curl я могу получить актив. ex: curl 'http://www.myapp.com/assets/application-c9a778bb55ad4152d956fd34fe6f7839.css'
  • Приложение не использует SSL. Тем не менее, я по-прежнему установил политику протокола Origin для соответствия программе просмотра в соответствии с предложениями @Omar.
  • Я попытался загрузить актив из своего приложения в браузере и смог получить доступ к активам. ex: 'http://www.myapp.com/assets/application-c9a778bb55ad4152d956fd34fe6f7839.css' Однако, пытаясь получить доступ к активам непосредственно на облачном (d1ax5oefcdtdki.cloudfront.net/assets/application-c9a778bb55ad4152d956fd34fe6f7839.css) перенаправляет его на myapp.com
  • Скриншоты для облачного DS:

https://www.dropbox.com/s/bkg480d4it6zl2r/Screenshot%202015-12-06%2014.01.28.png?dl=0

http://glui.me/?i=7ah73hffrhvmpt7/2015-12-06_at_2.02_PM.png/

https://www.dropbox.com/s/dd4wwgm3md8w7qn/Screenshot%202015-12-06%2014.05.20.png?dl=0

4b9b3361

Ответ 1

Для всех, у кого есть проблемы с отладкой cloudfront.

Проблема заключалась в переадресации в Cloudfront (возможно, из-за неправильной настройки). После недействительности кеша я смог заставить CF получать из своего приложения активы и обслуживать их.

введите описание изображения здесь

Ответ 2

Когда вы запрашиваете актив в первый раз, облачный контроль проверяет, кэшируется ли файл или нет, например, вы запрашиваете:

http://XXXXX.cloudfront.net/assets/application-22c7c249df1a24541d86603b0715eefe.css

в первый раз облачный экран даст пропущенную кэш, а затем вытащит файл из эквивалентного пути из рельсов. Чтобы следующий раз вы запрашивали тот же файл, он будет уже кэширован.

Чтобы это сработало, вам нужно убедиться, что у вас все настроено правильно.

От стороны рельсов нечего делать, кроме установки assets_host в production.rb. Поскольку у вас уже есть драгоценный камень rails_12factor, нет необходимости добавлять config.assets.compile = true. Из документации драгоценного камня вы можете видеть в разделе, в котором он добавляет сервисные статические активы документация.

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

Origin Domain Name, чтобы быть URL-адресом вашего приложения rails.

Origin Protocol Policy to Match Viewer

Distribution State до Enabled

Также есть некоторые другие настройки, которые могут помочь вам оптимизировать кеширование доставки контента.