Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
В современных 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 запустить.
Итак, наши цели:
<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
И последнее, в Webflow выключаем SSL proxy (Caddy сам выпускает сертификат).
Если все сделать аккуратно, даунтайм лендинга будет практически нулевой.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Что используете для лендоса?
-
0,0%Tilda0
-
0,0%Webflow0
-
0,0%Wix0
-
0,0%Самописное решение0