Um servidor proxy reverso simples e configurável que roteia requests baseado em prefixos de URL.
go install github.com/sh-lucas/goproxy@latestgit clone https://github.com/sh-lucas/goproxy
cd goproxy
go build.
├── goproxy.yml # Configuração do proxy
├── main.go # Código principal do proxy
├── goproxy # Executável do proxy
├── start_servers.sh # Script para iniciar sistema de teste
├── test_requests.sh # Script para testar o roteamento
└── tests/
├── main.go # Código do servidor de teste
└── logServer # Executável do servidor de teste
# Via go install (recomendado)
go install github.com/sh-lucas/goproxy@latest
# Ou baixe e compile localmente
git clone https://github.com/sh-lucas/goproxy
cd goproxy
go buildCopie o exemplo e edite conforme necessário:
cp goproxy.example.yml goproxy.yml
# Edite goproxy.yml com suas configurações# Se instalado via go install
goproxy
# Se compilado localmente
./goproxy# De forma bem simples:
make run
# Inicia sistema de teste completo
./start_servers.sh
# Em outro terminal, testa o roteamento
./test_requests.shO arquivo de configuração de exemplo contém as seguintes rotas:
| Request | Destino | Exemplo |
|---|---|---|
/motor/* |
localhost:4001 |
GET /motor/abc → GET http://localhost:4001/abc |
/scan/* |
localhost:4002 |
GET /scan/test → GET http://localhost:4002/test |
/* (outros) |
localhost:4003 |
GET /qualquer → GET http://localhost:4003/qualquer |
Crie um arquivo goproxy.yml:
mainPort: 4000 # Porta do proxy
motor: localhost:4001 # Destino para /motor/*
scan: localhost:4002 # Destino para /scan/*
default: localhost:4003 # Destino padrãogo build .# Servidor na porta específica
./tests/logServer -p 4001
# Usar porta padrão (8080)
./tests/logServerProvavelmente está incorreto!!! Esses são leftovers:
cd tests
go build -o logServer main.go# Teste motor
curl http://localhost:4000/motor/api/status
# Teste scan
curl http://localhost:4000/scan/document.pdf
# Teste default
curl http://localhost:4000/home/page
# Root do proxy
curl http://localhost:4000/Os servidores de teste mostram informações detalhadas sobre cada request:
- Timestamp
- Método HTTP
- URL completa
- Path
- Query parameters
- Headers
Isso permite visualizar exatamente como o proxy está roteando as requests! 🎉