Gately v0.5.2 lançado
20 de outubro de 2026
Um IP público tem uma porta 443, e VPNs, sites e proxies querem todos usá-la. A solução comum é colocar haproxy ou nginx stream na frente para rotear por domínio e um nginx atrás para o proxy reverso: três programas, três configurações. A v0.5.2 permite que o Gately faça tudo isso em um só programa: roteamento por domínio, proxy reverso e login com TOTP, com desempenho à altura de haproxy + nginx.
Baixar a v0.5.2 · GitHub Release
Roteamento SNI: vários serviços na porta 443
O redirecionamento de portas tem um novo modo "Roteamento SNI" (pedido por um usuário no grupo do Telegram, #3):
- Ele lê o domínio no handshake TLS e repassa a conexão inteira ao backend escolhido pelo domínio. O TLS não é descriptografado aqui, então os certificados ficam nos backends;
- Os domínios podem ser exatos, um curinga
*.example.comou*. Conexões sem correspondência, sem SNI ou que não são TLS vão para o destino padrão e são fechadas quando não há um; - O protocolo PROXY v1 / v2 é definido por rota, para os backends receberem o endereço real do cliente;
- O cartão da regra mostra quantas conexões cada rota e o destino padrão receberam.
Veja Redirecionamento de portas para um exemplo completo de substituição do haproxy.
Os Serviços Web podem substituir o nginx
- Backends por caminho: envie um prefixo de caminho para outro conjunto de backends ou adicione cabeçalhos de requisição só para esse caminho, como um
locationdo nginx; - Autenticação delegada: delegue a autenticação ao Authelia ou a um serviço parecido, como o
auth_request, e proteja só caminhos como/admin; - Backends HTTPS recebem o domínio acessado como SNI: necessário quando o backend roteia por SNI, por exemplo o
vhost_httpsdo frp; {host}em redirecionamentos: uma única regra comhttps://{host}envia HTTP para HTTPS em todos os domínios;- Sites estáticos: URLs sem extensão (VitePress e similares), página 404 personalizada e cabeçalhos de resposta;
- Editar um site não reinicia mais o listener: as conexões abertas (inclusive WebSocket) continuam ativas, as estatísticas são mantidas e uma nova configuração inválida deixa a anterior atendendo.
Veja "Substituindo haproxy e nginx" em Serviços Web para saber como as configurações do nginx se traduzem.
Usuários compartilhados: TOTP e login único
Adicione usuários compartilhados em "Serviços Web → Configurações globais", ative o TOTP para cada um (lendo um QR code) e defina um domínio de login único, como example.com, para que entrar em um site valha para todos os sites sob ele. Um site só precisa marcar "Usar usuários compartilhados". Se você não quer rodar o Authelia só para isso, o recurso já vem embutido.
Desempenho
haproxy + nginx e Gately comparados na mesma máquina, cada um limitado a 2 núcleos de CPU, com a configuração de um servidor real (90 domínios, protocolo PROXY v2):
| Cenário | haproxy + nginx | Gately |
|---|---|---|
| Proxy reverso HTTPS, keep-alive, respostas de 1 KB | 14.767 req/s | 26.434 req/s |
| Uma nova conexão TLS a cada requisição | 2.557 req/s | 3.448 req/s |
| Respostas de 1 MB | 1.053 MB/s | 1.585 MB/s |
| Repasse SNI de um fluxo TLS | 2.927 MB/s | 4.962 MB/s |
| Repasse SNI, novas conexões por segundo | 6.334 /s | 6.266 /s |
Em memória, o Gately usa cerca de 110 MB, e haproxy e nginx juntos cerca de 42 MB. O método, os números completos e as ressalvas estão no README.
Notas de atualização
- Docker: baixe a nova imagem e recrie o contêiner. Binário: substitua o executável e reinicie.
- Versões anteriores à v0.5.2 não entendem regras de roteamento SNI. Desative ou exclua essas regras antes de voltar para uma versão anterior: uma versão antiga as trata como redirecionamento comum, e uma regra sem destino padrão a derruba na primeira conexão.
- Ao substituir o haproxy, pare o haproxy antes de ativar a regra do Gately, porque só um programa pode escutar em uma porta.
Dúvidas e ideias são bem-vindas nas GitHub Issues ou no grupo do Telegram.