Executando verificação de segurança...
2

Substituí o Nginx por um Proxy Reverso que escrevi do zero (Meu primeiro projeto em Go)

Gostaria de compartilhar uma nova experiência com vocês.

Nunca utilizei Go antes, hoje foi a minha primeira vez. Queria começar algum projeto nessa lang mas não tinha ideia do que fazer, então quis me desafiar e comecei a fazer um reverse-proxy, com objetivo de criar uma alternativa ao nginx.

Eu queria construir algo onde a configuração fosse um YAML simples, legível e que já viesse com o essencial embutido. A biblioteca padrão do Go (net/http/httputil) resolve boa parte do trabalho pesado. O resultado foi o ApexProxy.

O que ele faz até agora:

  • Roteamento baseado em Host e Path.
  • Load Balancing (Round-Robin, IP-Hash e Single).
  • TLS automático com Let's Encrypt (usando autocert), sem precisar configurar Certbot por fora.
  • Dashboard TUI no terminal para monitorar conexões, latência, uso de banda e os status HTTP (2xx, 4xx, 5xx) em tempo real. (WIP)

Coloquei ele para rodar substituindo o Nginx no meu site. O processo está consumindo cerca de ~3 MB de RAM. Pelo painel, já consigo monitorar os bots de scan genéricos da internet procurando rotas como /.env ou /dns-query e tomando 502, sem encostar na aplicação.

apexproxy

Se alguém com experiência em Go quiser dar um code review, apontar erros na arquitetura ou testar, o repositório é esse:

https://github.com/Niix-Dan/ApexProxy

Abaixo está um print de um scan/ataque em andamento. Repare que alguns endpoints retornaram status [UP]. Isso aconteceu porque o bot fez a requisição utilizando o domínio correto configurado no reverse-proxy. O proxy fez o repasse legítimo e o bot acabou caindo na página de fallback customizada do próprio website (Page Not Found / 404 do backend):
Ele retornou UP pra alguns endpoints pois o bot passou utilizando o dominio que estava configurado no reverse-proxy e caiu na página de fallback do website (Page not found customizada)

ataque

Carregando publicação patrocinada...