[CMS, DevOps] Webflow для лендинга + Ghost для блога с Caddy Server (перевод)

Автор Сообщение
news_bot ®

Стаж: 6 лет 7 месяцев
Сообщений: 27286

Создавать темы news_bot ® написал(а)
29-Дек-2020 13:32

В современных SaaS приложениях лендинг, блог и основное приложение — это три разных сервиса/продукта со своими технологиями. Для лендинга вы можете использовать Tilda, Webflow или другие веб-конструкторы. Для блога обычно используют автономную CMS, такую как WordPress, Ghost или другие.Для SEO крайне важно продвигать и индексировать основной домен <your_domain>.com вместо субдомена blog.<your_domain>.com. Чем больше контента будет на <your_domain>.com/blog, тем больше Google будет индексировать его, а значит и главную страницу.Хостинг блога на blog.<your_domain>.com на Ghost сделать не сложно, достаточно развернуть Ghost блог на машине и прописать A-запись в настройках DNS. Однако, если вы хотите запустить лендинг страницу на Webflow на основном домене <your_domain>.com, а разместить блог на субдиректории <your_domain>.com/blog на Ghost, понадобится использовать reverse-proxy сервер.Ниже рассмотрим конфиг в Docker Compose и Caddyfile, как такой proxy запустить.
Reverse-proxy серверИтак, наши цели:
  • <your_domain>.com -> Webflow
  • <your_domain>.com/* -> Webflow
  • <your_domain>.com/blog -> self hosted Ghost блог
  • blog.<your_domain>.com -> <your_domain>.com/blog
Возьмем Caddy server в качестве reverse-proxy по следующим причинам:
  • Удобный запуск в docker.
  • Быстрый старт без глубоких знаний devops.
Официальный образ Caddy можно найти тут. При установке убедитесь, что вы сделать mount volumes чтобы Caddy работал корректно.Дальше мы будет хостить Ghost и Caddy на одной машине в одном docker-compose.yml файле.
version: "3.7"
services:
caddy:
   image: caddy:2
   restart: unless-stopped
   ports:
     - "80:80"
     - "443:443"
   volumes:
     - $PWD/Caddyfile:/etc/caddy/Caddyfile
     - $PWD/site:/srv
     - caddy_data:/data
     - caddy_config:/config
ghost:
   image: ghost:3
   environment:
     NODE_ENV: production
     url: https://adapty.io/blog
   volumes:
     - ./blog:/var/lib/ghost/content
volumes:
caddy_data:
caddy_config:
На что стоит обратить внимание, это volumes, которые Caddy монтирует к локальной машине. Как я понимаю, в директориях он хранит сертификаты, чтобы не нужно было делать перевыпуск.Дальше Caddyfile:
blog.adapty.io {
   redir https://adapty.io/blog{uri} #point to subdirectory
}
adapty.io {
   redir /blog /blog/ #trailing slash
   reverse_proxy /blog/* ghost:2368 { #proxy to Ghost container
       header_up Host {host}
   }
   reverse_proxy proxy.webflow.com { #proxy to Webflow
       header_up Host {host}
   }
}
Запускаем docker-compose up -d и все!По умолчанию Caddy пропускает без изменений все входящие хэдеры на бэкенд, включая хэдер Host, но:
  • Caddy устанавливает или модифицирует X-Forwarded-For.
  • Caddy устанавливает X-Forwarded-Proto.
Больше в официальной документации https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#headersНаконец, изменим в DNS A-запись для основного домена, чтобы она указывала на машину с Caddy
Меняем DNSИ последнее, в Webflow выключаем SSL proxy (Caddy сам выпускает сертификат).
Выключаем в Webflow SSLЕсли все сделать аккуратно, даунтайм лендинга будет практически нулевой.
===========
Источник:
habr.com
===========

===========
Автор оригинала: Vitaly Davydov
===========
Похожие новости: Теги для поиска: #_cms, #_devops, #_caddy, #_webflow, #_ghost, #_cms, #_devops
Профиль  ЛС 
Показать сообщения:     

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы

Текущее время: 06-Окт 15:44
Часовой пояс: UTC + 5