Skip to content
Esta página se tradujo con IA y puede contener imprecisiones. Ayuda a mejorarla en GitHub.

Publicado Gately v0.5.2 ​

20 de octubre de 2026

Una IP pública tiene un solo puerto 443, y las VPN, los sitios web y los proxies lo quieren todos. La solución habitual es poner delante haproxy o nginx stream para enrutar por dominio y detrás nginx para el proxy inverso: tres programas y tres configuraciones. v0.5.2 permite que Gately lo haga todo en un único programa: enrutamiento por dominio, proxy inverso e inicio de sesión con TOTP, a una velocidad que está a la altura de haproxy + nginx.

Descargar v0.5.2 · GitHub Release

Enrutamiento SNI: varios servicios en el puerto 443 ​

El reenvío de puertos tiene un nuevo modo, «Enrutamiento SNI» (lo pidió un usuario en el grupo de Telegram, #3):

  • Lee el dominio del handshake TLS y pasa la conexión completa al backend elegido según el dominio. TLS no se descifra aquí, así que los certificados permanecen en los backends;
  • Los dominios pueden ser exactos, un comodín *.example.com o *. Las conexiones sin coincidencia, sin SNI o que no son TLS van al destino predeterminado, y se cierran cuando no lo hay;
  • El protocolo PROXY v1 / v2 se configura por ruta, de modo que los backends reciben la dirección real del cliente;
  • La tarjeta de la regla muestra cuántas conexiones ha recibido cada ruta y el destino predeterminado.

Consulta Reenvío de puertos para ver un ejemplo completo de cómo sustituir a haproxy.

Servicios web puede sustituir a nginx ​

  • Backends por ruta: envía un prefijo de ruta a otro conjunto de backends, o añade cabeceras de petición solo para esa ruta, como un location de nginx;
  • Autenticación delegada: delega la autenticación en Authelia o un servicio similar, como auth_request, y protege solo rutas como /admin;
  • Los backends HTTPS reciben como SNI el dominio visitado: necesario cuando el backend enruta por SNI, por ejemplo vhost_https de frp;
  • {host} en las redirecciones: una sola regla con https://{host} envía HTTP a HTTPS para todos los dominios;
  • Sitios estáticos: URL sin extensión (VitePress y similares), una página 404 personalizada y cabeceras de respuesta;
  • Editar un sitio ya no reinicia el listener: las conexiones abiertas (incluido WebSocket) se mantienen, las estadísticas se conservan y, si la nueva configuración no es válida, la anterior sigue sirviendo.

Consulta «Sustituir haproxy y nginx» en Servicios web para ver cómo se trasladan los ajustes de nginx.

Usuarios compartidos: TOTP e inicio de sesión único ​

Añade usuarios compartidos en «Servicios web → Ajustes globales», activa TOTP para cada uno (escaneando un código QR) y define un dominio de inicio de sesión único como example.com, para que iniciar sesión en un sitio sirva para todos los sitios bajo ese dominio. En cada sitio basta con marcar «Usar usuarios compartidos». Si prefieres no ejecutar Authelia solo para esto, ya viene integrado.

Rendimiento ​

haproxy + nginx y Gately comparados en la misma máquina, cada uno limitado a 2 núcleos de CPU, con la configuración de un servidor real (90 dominios, protocolo PROXY v2):

Escenariohaproxy + nginxGately
Proxy inverso HTTPS, keep-alive, respuestas de 1 KB14.767 req/s26.434 req/s
Una conexión TLS nueva por cada petición2.557 req/s3.448 req/s
Respuestas de 1 MB1.053 MB/s1.585 MB/s
Paso SNI de un flujo TLS2.927 MB/s4.962 MB/s
Paso SNI, conexiones nuevas por segundo6.334 /s6.266 /s

En memoria, Gately usa unos 110 MB y haproxy y nginx juntos unos 42 MB. El método, las cifras completas y las salvedades están en el README.

Notas de actualización ​

  • Docker: descarga la nueva imagen y recrea el contenedor. Binario: sustituye el ejecutable y reinicia.
  • Las versiones anteriores a v0.5.2 no entienden las reglas de enrutamiento SNI. Desactívalas o elimínalas antes de volver a una versión anterior: una versión antigua las trata como reenvío normal, y una regla sin destino predeterminado la hace fallar en la primera conexión.
  • Al tomar el relevo de haproxy, detén haproxy antes de activar la regla de Gately, porque solo un programa puede escuchar en un puerto.

Las preguntas e ideas son bienvenidas en GitHub Issues o en el grupo de Telegram.

Publicado bajo la licencia Apache-2.0.