Отказ от ответственности: я работаю на Netlify.
Вы определенно можете сделать это, не запуская свой собственный сервер и не платя ничего лишнего.
Так как Netlify уже имеет CDN, неоптимально поставить CDN cloudflare (активируется с помощью «оранжевого облака» в их настройках) перед Netlify. Помимо того, что это неэффективно, это нарушает атомарное развертывание и откат Netlify , а также замедляет обслуживание страниц из наших наблюдений. Это может работать, но не рекомендуется. Однако DNS CloudFlare довольно производительный и может использоваться без их CDN (отключите «оранжевое облако»). Их DNS хорошо работает с контентом, размещенным на CDN Netlify.
Вот как можно настроить это для Netlify.
- Разверните ваши статические активы на сайте Netlify в вашем основном пользовательском домене, скажем, это my-example.com. В целях тестирования вы можете использовать встроенное имя сайта в Netlify (Some-something-1234.netlify.com) вместо my-example.com. Приведенные ниже примеры перенаправлений являются «независимыми от хоста», поэтому будут работать с именем хоста Netlify, Предварительный просмотр развертывания Netlify И ИМ производственного хоста.
- Найдите все пути для вашего динамического содержимого - для этого примера, скажем, динамические / main / * и / app / *, а ваш бэкэнд размещен в Heroku.
- Создание правил перенаправления прокси для указания на эти пути. Они могут быть размещены через CDN CloudFlare для защиты вашего API, если вы хотите - Netlify для прокси на сайтах Heroku, работающих на CloudFlare, работает нормально. Вы также можете выбрать прокси прямо на Heroku, что будет менее сложно. Netlify имеет встроенную защиту от DDoS-атак и все еще находится "перед" вашим приложением Heroku. До вас.
- Разверните эти прокси-правила и протестируйте.
Прокси Netlify (технически реверсивное проксирование) может подключаться к любому бэкэнду, который вам нужен, и НЕ показывает URL посетителю - он смотрит на них (панель URL в браузере, соединение HTTPS), как если бы они были подключены к моему -example.com все время, но содержимое возвращается из вашего бэкэнда (включая коды состояния HTTP. Этот ответ кэшируется в CDN Netlify, если это указано в ваших директивах Cache-Control:
HTTP Header, которые отправляет приложение Heroku. Обратите внимание, что CloudFlare БУДЕТ ИЗМЕНЕН ваш заголовок Cache-Control, если вы установите его для контента, к которому они относятся по доверенности! Netlify не будет.)
Вот общие настройки:
/main/* https://yourapp.herokuapp.com/main/:splat 200!
/app/* https://yourapp.herokuapp.com/main/:splat 200!
Обратите внимание, что если вы развертываете ЛЮБЫЕ активы в / main или / app в Netlify, они будут игнорироваться из-за запаздывания !
в этих правилах. См. https://www.netlify.com/docs/redirects/#note-on-shadowing для получения дополнительной информации о том, как это работает и альтернативы (TL; DR: развертывание некоторых вещей, таких как /main/logo.png на Netlify, но ничего, что Heroku не должен обслуживать, по сравнению с развертыванием ВСЕГО необходимого контента для / main / * на Героку).
Обратите внимание, что я предлагаю использовать идентичные пути в Netlify и Heroku (/main/*
), а не проксировать до /somethingelse/*
, так как легче отлаживать загрузку ресурсов, когда пути совпадают. Это не является обязательным требованием.