Cerebro Studio · Backlog · Changelog
Cerebro • /root/cerebro/docs/changelog/2026/CL-2026-03-11-BK-117.md • 2026-03-11T15:02:05.992Z

CL-2026-03-11-BK-117 · Compatibilidade Lua do Nginx administrativo da VPS

  • Status: (V) conferido e aprovado
  • Escopo: plataforma
  • Projetos afetados: cerebro, legalizarj, rionoteatro, seuimovel
  • BK relacionado: BK-117
  • Aprovacao humana obrigatoria: sim
  • Data: 2026-03-11
  • Autor: Codex (GeJoRei-VPS)
  • revisor_ia: auto-revisao

Resumo

Concluida a normalizacao da compatibilidade Lua no Nginx do Ubuntu usado para administracao da VPS. O erro de nginx -t vinha do binario /usr/sbin/nginx, que lia os vhosts gerados pelo aaPanel sem ter os modulos Lua carregados. Os sites em producao continuavam atendidos por outro binario, /www/server/nginx/sbin/nginx, ja compatível com Lua. A correcao instalou os modulos ndk/http_lua no Nginx do Ubuntu, recolocou no /etc/nginx/nginx.conf apenas a inicializacao Lua minima esperada pelos vhosts e manteve o Nginx ativo do aaPanel inalterado.

Contexto

  • O erro inicial era unknown directive "set_by_lua_block" em /www/server/panel/vhost/nginx/well-known/cerebro.seuimovel.rio.br.conf.
  • A investigacao encontrou outros arquivos com diretivas Lua, incluindo access_by_lua_block em /www/server/panel/vhost/nginx/rionoteatro.com.br.conf, usado para controle de acesso por pais.
  • O processo realmente escutando 80/443 no host era /www/server/nginx/sbin/nginx -c /www/server/nginx/conf/nginx.conf, iniciado fora da unit nginx.service do Ubuntu.
  • A unit nginx.service do Ubuntu estava desabilitada/inativa; o seu nginx -t falhava apenas por incompatibilidade do binario/configuracao administrativa com os snippets Lua compartilhados do aaPanel.

Entregas Tecnicas

1) Separacao clara entre Nginx de runtime e Nginx administrativo

  • Confirmado que o reverse proxy ativo dos projetos e o Nginx do aaPanel em /www/server/nginx/sbin/nginx.
  • Confirmado que nginx.service do Ubuntu esta inativo e nao e o processo que atende os sites.
  • Identificado tambem um nginx -g daemon off pertencente a container Docker, sem relacao com o reverse proxy do host.

2) Restauracao da compatibilidade Lua no caminho administrativo

  • Instalados libnginx-mod-http-ndk e libnginx-mod-http-lua no Nginx do Ubuntu.
  • Dependencias adicionadas automaticamente: lua-resty-core, lua-resty-lrucache e libluajit2-5.1-2.
  • Mantido lua-mmdb, que ja estava presente no host.
  • Adicionados ao /etc/nginx/nginx.conf:
  • lua_package_path
  • lua_package_cpath
  • init_by_lua_block com carga defensiva do modulo mmdb e abertura do banco /etc/nginx/geoip/dbip-country-lite.mmdb
  • Nenhum vhost de projeto foi alterado.

3) Validacao objetiva

  • nginx -t passou a retornar syntax is ok e test is successful no Nginx do Ubuntu.
  • /www/server/nginx/sbin/nginx -t -c /www/server/nginx/conf/nginx.conf permaneceu valido no Nginx ativo do aaPanel.
  • curl -skI --resolve cerebro.seuimovel.rio.br:443:127.0.0.1 https://cerebro.seuimovel.rio.br/ retornou HTTP/2 200.
  • curl -skI --resolve legalizarj.com.br:443:127.0.0.1 https://legalizarj.com.br/ retornou HTTP/2 200.
  • curl -skI --resolve rionoteatro.com.br:443:127.0.0.1 https://rionoteatro.com.br/ retornou HTTP/2 200.

4) Backup e rollback

  • Backup versionado da intervencao em /root/cerebro/backups/system/2026-03-11-bk117-nginx-lua-compat/.
  • Rollback disponivel em /root/cerebro/backups/system/2026-03-11-bk117-nginx-lua-compat/rollback.sh.
  • Evidencias salvas:
  • state/nginx-t.pre.txt
  • state/nginx-t.postinstall.txt
  • state/aapanel-nginx-t.txt
  • files/nginx.conf.pre

Riscos Residuais

  • O host continua com dois planos distintos de Nginx: o runtime real do aaPanel e o Nginx do Ubuntu usado para validacao/administracao. Isso ficou documentado, mas a duplicidade operacional continua existindo.
  • O nginx.service do Ubuntu nao deve ser usado para subir o proxy do host sem revisao previa, porque o trafego real continua concentrado no stack do aaPanel.
  • A correcao elimina o falso negativo de nginx -t no caminho administrativo, mas nao substitui uma futura decisao arquitetural de consolidar ou remover um dos dois Nginx do host.