Webflow для лендинга + Ghost для блога с Caddy Server

от автора

В современных 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 сервер
Reverse-proxy сервер

Итак, наши цели:

  1. <your_domain>.com -> Webflow

  2. <your_domain>.com/* -> Webflow

  3. <your_domain>.com/blog -> self hosted Ghost блог

  4. 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
Меняем DNS

И последнее, в Webflow выключаем SSL proxy (Caddy сам выпускает сертификат).

Выключаем в Webflow SSL
Выключаем в Webflow SSL

Если все сделать аккуратно, даунтайм лендинга будет практически нулевой.

ссылка на оригинал статьи https://habr.com/ru/post/535236/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *