Skip to content
Cette page a été traduite par IA et peut contenir des inexactitudes. Aidez-nous à l'améliorer sur GitHub.

Gately v0.5.2 est disponible ​

20 octobre 2026

Une IP publique n'a qu'un seul port 443, et les VPN, les sites web et les proxys le veulent tous. La solution habituelle place haproxy ou nginx stream en façade pour router par domaine, avec nginx derrière pour le proxy inverse : trois programmes, trois configurations. La v0.5.2 permet à Gately de tout faire dans un seul programme : routage par domaine, proxy inverse et connexion TOTP, à une vitesse qui tient la comparaison avec haproxy + nginx.

Télécharger la v0.5.2 · GitHub Release

Routage SNI : plusieurs services sur le port 443 ​

La redirection de ports dispose d'un nouveau mode « Routage SNI » (demandé par un utilisateur du groupe Telegram, #3) :

  • Il lit le domaine dans la négociation TLS et transmet toute la connexion au backend choisi selon ce domaine. Le TLS n'est pas déchiffré à cette étape : les certificats restent donc sur les backends ;
  • Les domaines peuvent être exacts, un joker *.example.com ou *. Les connexions sans correspondance, sans SNI ou hors TLS vont vers la cible par défaut, et sont fermées s'il n'y en a pas ;
  • Le protocole PROXY v1 / v2 se règle par route, pour que les backends reçoivent l'adresse réelle du client ;
  • La carte de la règle indique combien de connexions chaque route et la cible par défaut ont reçues.

Voir Redirection de ports pour un exemple complet de remplacement de haproxy.

Les Services Web peuvent remplacer nginx ​

  • Backends par chemin : envoyez un préfixe de chemin vers un autre ensemble de backends, ou ajoutez des en-têtes de requête pour ce chemin uniquement, comme un location de nginx ;
  • Authentification déléguée : confiez l'authentification à Authelia ou à un service similaire, comme auth_request, et protégez uniquement des chemins tels que /admin ;
  • Les backends HTTPS reçoivent le domaine visité comme SNI : nécessaire quand le backend route selon le SNI, par exemple le vhost_https de frp ;
  • {host} dans les redirections : une seule règle avec https://{host} redirige HTTP vers HTTPS pour tous les domaines ;
  • Sites statiques : URL propres (VitePress et similaires), page 404 personnalisée et en-têtes de réponse ;
  • Modifier un site ne redémarre plus l'écouteur : les connexions ouvertes (WebSocket compris) restent actives, les statistiques sont conservées, et une nouvelle configuration invalide laisse l'ancienne en service.

Voir « Remplacer haproxy et nginx » dans Services Web pour la correspondance des réglages nginx.

Utilisateurs partagés : TOTP et authentification unique ​

Ajoutez des utilisateurs partagés dans « Services Web → Paramètres globaux », activez TOTP pour chacun (en scannant un QR code) et définissez un domaine d'authentification unique comme example.com : une connexion sur un site vaut alors pour tous les sites de ce domaine. Un site n'a qu'à cocher « Utiliser les utilisateurs partagés ». Si vous préférez ne pas faire tourner Authelia uniquement pour cela, la fonction est intégrée.

Performances ​

haproxy + nginx et Gately comparés sur la même machine, chacun limité à 2 cœurs CPU, avec la configuration d'un vrai serveur (90 domaines, protocole PROXY v2) :

Scénariohaproxy + nginxGately
Proxy inverse HTTPS, keep-alive, réponses de 1 Ko14 767 req/s26 434 req/s
Une nouvelle connexion TLS par requête2 557 req/s3 448 req/s
Réponses de 1 Mo1 053 Mo/s1 585 Mo/s
Transmission SNI d'un flux TLS2 927 Mo/s4 962 Mo/s
Transmission SNI, nouvelles connexions par seconde6 334 /s6 266 /s

Côté mémoire, Gately utilise environ 110 Mo, et haproxy et nginx environ 42 Mo à eux deux. La méthode, les chiffres complets et les réserves figurent dans le README.

Notes de mise à niveau ​

  • Docker : récupérez la nouvelle image et recréez le conteneur. Binaire : remplacez l'exécutable et redémarrez.
  • Les versions antérieures à la v0.5.2 ne comprennent pas les règles de routage SNI. Désactivez-les ou supprimez-les avant de revenir en arrière : une version plus ancienne les traite comme une redirection simple, et une règle sans cible par défaut la fait planter dès la première connexion.
  • Pour prendre le relais de haproxy, arrêtez haproxy avant d'activer la règle Gately, car un seul programme peut écouter sur un port donné.

Questions et idées sont les bienvenues sur GitHub Issues ou dans le groupe Telegram.

Publié sous licence Apache-2.0.