Nova Arquitetura F5 Sites: Nginx-proxy Reverso de Múltiplos Dockers WordPress

Finalizando a tarefa mais difícil demorada, complexa e importante da história da F5 sites, mesmo tendo achado, ou até mesmo escrito posts anteriormente aqui no blog com o mesmo argumento, apenas agora, tive a plena consciência do que significa a nova arquitetura do F5 sites, como eu fiz uma virada há 2 anos e tudo isso aos poucos foi fazendo sentindo e criando pequenas soluções que juntas formam uma complexa nova arquitetura. O resultado prático é simples, mas o caminho para chegar nesse esquema é único e representa o passado, presente e futuro da F5 Sites.

Nem sempre uma tarefa nasce com o título que deveria, no começo do ano tive um excedente de caixa e pude contratar mais um pequeno servidor, uma micro cloud, com configuração mais básica e econômica (nanode de 5 dólares, uma micro VM). Para manter os custos sempre enxutos, não contratava qualquer serviço que não fosse estritamente necessário, regra que começou a valer em 2017, se não é necessário, se existe solução grátis ou se eu posso fazer, não contrato. Aqui no blog tem-se muitos posts sobre como migrei de um plano de revenda de hospedagem super custoso que hospedava mais de 10 sites, para uma micro VM de 5 dólares, hospedando os mesmos sites. Aqui já temos os ingredientes da sopa dessa publicação:

  • Mudanças na forma de administrar recursos
  • Possibilidade de contratação de um servidor adicional
  • A forma improvisada (algumas vezes atrapalhada e apressada) de criar soluções

(O apressado acaba sendo uma característica inerente de quem não tem muito tempo para se dedicar integralmente para os próprios projetos, já que trabalho contratado 8 horas por dia para terceiros, além de ter uma vida pessoal que reduz minha atuação na F5 Sites as vezes a poucas horas por mês.)

Assim essa nova tarefa surgiu com o tema de “eliminar uma VM” (voltar a operar somente com uma VM). Portanto precisei migrar toda a arquitetura da VM antiga para a nova arquitetura da VM nova, com docker com nginx-proxy e acme certbots automatizado, proxyando diversos outros dockers, seja WordPress, Node ou Python.

Entrei no maior desafio da minha vida, que para muitos é algo bem simples e trivial, para mim foi uma jornada ao desconhecido. Significa ter um objetivo e buscar o conhecimento, estudar muito, fazer milhões de testes para chegar em uma fórmula muito simples. Como pegar uma AK 47, uma arma tão simples e fácil de fazer que surpreende, mas levou muitos anos para chegar nesse produto.

Então descobri com muita pesquisa, mais do que muitas semanas de teste a fio, como sustentar em pé um serviço docker que fizesse o proxy reverso para cada domínio. Porque o docker / apache trabalha com a porta 80/443, assim não tem como levantar outro docker no mesmo ambiente, se for trabalhar com um projeto WordPress precisa desligar o outro. O grande desafio foi encontrar uma forma de levantar dois dockers / apache usando a mesma porta 80 e magicamente entregar para o usuário na ponta, o site que está acessando.

Acredito que o conhecimento que construi nestes meses são muito relevantes e por isso vou criar uma série de vídeos, talvez até mesmo um curso ensinando passo a passo como fazer uso desta tecnologia e solução, como já falei, simples para quem conhece, mas um longo caminho de conhecimento para quem quer dominar todas as etapas.