Gately v0.5.2 veröffentlicht
- Oktober 2026
Eine öffentliche IP hat genau einen Port 443, und VPN, Websites und Proxys wollen ihn alle. Die übliche Lösung ist haproxy oder nginx stream davor, das nach Domain verteilt, und dahinter nginx als Reverse Proxy: drei Programme, drei Konfigurationen. Mit v0.5.2 erledigt Gately das alles in einem Programm: Routing nach Domain, Reverse Proxy und Anmeldung mit TOTP, und das so schnell wie haproxy + nginx.
v0.5.2 herunterladen · GitHub Release
SNI-Routing: mehrere Dienste auf Port 443
Die Portweiterleitung hat einen neuen Modus „SNI-Routing“ (gewünscht von einem Nutzer aus der Telegram-Gruppe, #3):
- Er liest die Domain aus dem TLS-Handshake und reicht die gesamte Verbindung an das passende Backend durch. TLS wird hier nicht entschlüsselt, die Zertifikate bleiben auf den Backends;
- Domains können exakt, eine Wildcard wie
*.example.comoder*sein. Verbindungen ohne Treffer, ohne SNI oder ohne TLS gehen an das Standardziel und werden geschlossen, wenn keines gesetzt ist; - PROXY-Protokoll v1 / v2 wird pro Route eingestellt, damit Backends die echte Client-Adresse erhalten;
- Die Regelkarte zeigt, wie viele Verbindungen jede Route und das Standardziel erhalten haben.
Ein vollständiges Beispiel, wie haproxy ersetzt wird, steht unter Portweiterleitung.
Die Web-Dienste können nginx ersetzen
- Backends pro Pfad: ein Pfadpräfix an eine andere Gruppe von Backends schicken oder nur für diesen Pfad Request-Header hinzufügen, wie ein nginx-
location; - Forward-Auth: die Authentifizierung an Authelia oder einen ähnlichen Dienst übergeben, wie
auth_request, und nur Pfade wie/adminschützen; - HTTPS-Backends erhalten die aufgerufene Domain als SNI: nötig, wenn das Backend nach SNI routet, zum Beispiel
vhost_httpsvon frp; {host}in Weiterleitungen: Eine Regel mithttps://{host}leitet HTTP für jede Domain auf HTTPS um;- Statische Sites: URLs ohne Endung (VitePress und Ähnliches), eigene 404-Seite und Antwort-Header;
- Das Bearbeiten einer Site startet den Listener nicht mehr neu: Offene Verbindungen (auch WebSocket) bleiben bestehen, Statistiken bleiben erhalten, und bei einer ungültigen neuen Konfiguration läuft die alte weiter.
Wie sich nginx-Einstellungen übertragen lassen, steht unter „haproxy und nginx ersetzen“ in Web-Dienste.
Gemeinsame Benutzer: TOTP und Single Sign-on
Legen Sie unter „Web-Dienste → Globale Einstellungen“ gemeinsame Benutzer an, aktivieren Sie für jeden TOTP (QR-Code scannen) und setzen Sie eine Single-Sign-on-Domain wie example.com, damit eine Anmeldung auf einer Site für alle Sites darunter gilt. Eine Site muss dafür nur „Gemeinsame Benutzer verwenden“ angehakt haben. Wer dafür kein eigenes Authelia betreiben möchte, findet es hier eingebaut.
Leistung
haproxy + nginx und Gately im Vergleich auf demselben Rechner, jeweils auf 2 CPU-Kerne begrenzt, mit der Konfiguration eines echten Servers (90 Domains, PROXY-Protokoll v2):
| Szenario | haproxy + nginx | Gately |
|---|---|---|
| HTTPS-Reverse-Proxy, Keep-alive, 1-KB-Antworten | 14.767 req/s | 26.434 req/s |
| Neue TLS-Verbindung für jede Anfrage | 2.557 req/s | 3.448 req/s |
| 1-MB-Antworten | 1.053 MB/s | 1.585 MB/s |
| SNI-Durchleitung eines TLS-Streams | 2.927 MB/s | 4.962 MB/s |
| SNI-Durchleitung, neue Verbindungen pro Sekunde | 6.334 /s | 6.266 /s |
Beim Arbeitsspeicher braucht Gately etwa 110 MB, haproxy und nginx zusammen etwa 42 MB. Methode, vollständige Zahlen und Einschränkungen stehen im README.
Hinweise zum Upgrade
- Docker: das neue Image laden und den Container neu erstellen. Binärdatei: die ausführbare Datei ersetzen und neu starten.
- Versionen vor v0.5.2 kennen keine SNI-Routing-Regeln. Deaktivieren oder löschen Sie diese vor einem Downgrade: Eine ältere Version behandelt sie als normale Weiterleitung, und eine Regel ohne Standardziel bringt sie bei der ersten Verbindung zum Absturz.
- Wenn Gately haproxy ablöst, stoppen Sie haproxy, bevor Sie die Gately-Regel aktivieren, denn auf einem Port kann nur ein Programm lauschen.
Fragen und Ideen sind in den GitHub Issues oder in der Telegram-Gruppe willkommen.