Gleam.br Wiki

ADR-0016: Cloudflare Edge Router para Roteamento Multi-domínio em Projeto Único | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

ADR-0016: Cloudflare Edge Router para Roteamento Multi-domínio em Projeto Único

Este documento especifica a decisão de arquitetura para hospedagem e multiplexação de múltiplos domínios corporativos no Cloudflare Pages através de um Cloudflare Advanced Mode Worker (_worker.js).

1. Contexto e Motivação

Nosso gerador estático (gbr_ssg) compila os sites de 3 marcas corporativas no mesmo diretório de saída (/dist): - gleam-lang.com.br (Consultoria B2B na raiz /) - fvideen.com.br (Holding no subdiretório /fvideen/) - gleam.dev.br (Comunidade Open-Source no subdiretório /comunidade/)

Para evitar a complexidade e custos operacionais de gerenciar 3 projetos ou repositórios separados no Cloudflare Pages, utilizaremos uma única implantação do Cloudflare Pages associada a 3 Custom Domains, utilizando um Edge Router (_worker.js) na raiz de saída.


2. Decisão Arquitetural

  1. **Adoção do Cloudflare Pages Advanced Mode (_worker.js):** Incluiremos o arquivo _worker.js na raiz do diretório compilado (/dist/_worker.js). O runtime Edge do Cloudflare interceptará todas as requisições antes do servidor estático.

  2. *Roteamento Transparente por Hostname:* O Worker analisará o cabeçalho Host da requisição e fará a reescrita interna da URL (Reverse Proxy sem redirecionamento 301/302): - fvideen.com.br $\rightarrow$ serve /fvideen/index.html e sub-rotas /fvideen/*. - gleam.dev.br $\rightarrow$ serve /comunidade/index.html e sub-rotas /comunidade/*. - gleam-lang.com.br (ou qualquer outro host) $\rightarrow$ serve a raiz /.

  3. *Preservação de Ativos Globais (Asset Bypass):* Requisições direcionadas a recursos compartilhados como /assets/*, /css/*, /favicon.ico ou arquivos com extensões de ativos estáticos serão servidas diretamente da raiz sem reescrita de subdiretório de marca, evitando quebra de estilo e mídia.


3. Requisitos EARS

*Requisitos Ubíquos (Ubiquitous Requirements)* - *UBQ-01 (Multiplexação Transparente):* O Edge Router DEVE interceptar requisições nos Custom Domains e buscar o ativo estático correto usando a API nativa env.ASSETS.fetch(), SEM disparar redirecionamentos HTTP 301/302 visíveis para o cliente. - *UBQ-02 (Cópia Automática no Build):* A ferramenta CLI do gbr_ssg DEVE copiar o arquivo _worker.js para o diretório final de saída (./dist/_worker.js) após a geração do site estático.