Skip to content
IRC-Coding IRC-Coding
API Gateway Kong Nginx Load Balancing Rate Limiting API Routing

API Gateway Grundlagen mit Kong und Nginx: Routing, Sicherheit und Skalierung

Lerne API Gateway Grundlagen: Routing, Load Balancing, Authentifizierung, Rate Limiting, Kong und Nginx als API Gateway und Best Practices für skalierbare APIs.

S

schutzgeist

2 min read
API Gateway Grundlagen mit Kong und Nginx: Routing, Sicherheit und Skalierung

API Gateway Grundlagen mit Kong und Nginx

Ein API Gateway ist die zentrale Schicht vor Deinen APIs, die Routing, Sicherheit, Lastverteilung und Monitoring vereint.

Kompakte Beschreibung

Ein API Gateway ist eine Serverkomponente, die alle Client-Anfragen an eine API entgegennimmt und an die richtigen Backend-Services weiterleitet. Neben dem Routing übernimmt es Aufgaben wie Authentifizierung, Autorisierung, Rate Limiting, SSL-Terminierung, Caching, Load Balancing, Protokollumwandlung und Monitoring. Bekannte Implementierungen sind Kong, Nginx, Envoy, Traefik, AWS API Gateway und Azure API Management. Kong baut auf Nginx auf und ergänzt es durch ein Plugin-System und eine zentrale Verwaltung. Nginx selbst kann als leistungsfähiges Reverse Proxy und API Gateway genutzt werden. Ein API Gateway entkoppelt Clients von Backend-Services, vereinfacht Sicherheit und Zentralisierung und ist ein wichtiger Bestandteil moderner Microservices-Architekturen.

Wichtige Komponenten

Routing

Routing ist die Kernaufgabe eines API Gateways. Es leitet Anfragen anhand von Pfad, Methode, Header oder Host an den passenden Backend-Service weiter. Beispielsweise werden Anfragen an /orders an den Order-Service und Anfragen an /payments an den Payment-Service weitergeleitet.

Reverse Proxy

Ein API Gateway agiert als Reverse Proxy. Für die Clients ist das Gateway der einzige sichtbare Endpunkt, während die Backend-Services dahinter verborgen bleiben. Das schützt interne Services und ermöglicht deren Austausch ohne Auswirkungen auf die Clients.

Load Balancing

Load Balancing verteilt eingehende Anfragen auf mehrere Instanzen eines Backend-Services. Das verbessert Verfügbarkeit und Skalierbarkeit. Gängige Verfahren sind Round Robin, Least Connections und IP Hash. Health Checks erkennen ausgefallene Instanzen und nehmen sie aus der Verteilung.

Authentifizierung und Autorisierung

Das Gateway kann Authentifizierungsmechanismen wie OAuth2, JWT, API Keys oder mTLS zentral durchsetzen. Es prüft Tokens, bevor Anfragen die Backend-Services erreichen, und fügt gegebenenfalls bereinigte Nutzerinformationen hinzu.

Rate Limiting und Throttling

Rate Limiting begrenzt die Anzahl der Anfragen pro Client in einem Zeitraum. Throttling drosselt die Anfragenrate bei hoher Last. Beide Maßnahmen schützen Backend-Services vor Überlastung und Missbrauch. Sie können global, pro API oder pro Client konfiguriert werden.

SSL-Terminierung

Das Gateway übernimmt die SSL-TLS-Entschlüsselung und verschlüsselte Kommunikation mit den Clients. Die interne Kommunikation zu den Backend-Services kann unverschlüsselt oder mit internen Zertifikaten erfolgen, was die Verwaltung vereinfacht.

Caching

Ein API Gateway kann häufig angefragte Antworten cachen, um Backend-Last zu reduzieren und Latenz zu verringern. Caching ist besonders sinnvoll für statische oder selten wechselnde Daten. Cache-Schlüssel müssen sorgfältig gewählt werden, um falsche Antworten zu vermeiden.

Protokollumwandlung

Das Gateway kann zwischen Protokollen übersetzen, beispielsweise zwischen HTTP/1.1 und HTTP/2, REST und gRPC oder WebSockets und TCP. Das ermöglicht es, unterschiedliche Clients mit verschiedenen Backend-Services zu verbinden.

Logging und Monitoring

Das Gateway ist ein zentraler Punkt für Logging und Monitoring. Es protokolliert Anfragen, Antworten, Statuscodes, Latenzen und Fehler. Tools wie Prometheus, Grafana, ELK oder Datadog können diese Daten auswerten und visualisieren.

Kong

Kong ist ein beliebtes Open-Source API Gateway, das auf Nginx und OpenResty basiert. Es bietet ein umfangreiches Plugin-System für Authentifizierung, Rate Limiting, Logging, Transformation und mehr. Kong kann selbst gehostet oder als Cloud-Dienst genutzt werden.

Nginx als Gateway

Nginx ist ein leistungsfähiger Webserver und Reverse Proxy. Mit der richtigen Konfiguration kann er die grundlegenden Aufgaben eines API Gateways erfüllen, wie Routing, Load Balancing, SSL-Terminierung und Caching. Für erweiterte Plugin-Funktionen wird oft Kong oder Nginx Plus verwendet.

Praxisbeispiel

Ein Unternehmen betreibt mehrere Microservices und setzt Kong als API Gateway ein.

Kong Konfiguration für zwei Services:

services:
  - name: order-service
    url: http://orders.internal:8080
    routes:
      - name: orders-route
        paths:
          - /api/v1/orders
  - name: payment-service
    url: http://payments.internal:8080
    routes:
      - name: payments-route
        paths:
          - /api/v1/payments

plugins:
  - name: rate-limiting
    config:
      minute: 100
  - name: jwt
    config:
      uri_param_names: []
      cookie_names: []

In diesem Beispiel leitet Kong Anfragen an /api/v1/orders an den Order-Service und Anfragen an /api/v1/payments an den Payment-Service weiter. Das Rate-Limiting Plugin begrenzt die Anfragen auf 100 pro Minute. Das JWT Plugin stellt sicher, dass nur validierte Token auf die APIs zugreifen.

FAQ: API Gateway mit Kong und Nginx

1. Was ist ein API Gateway?

Ein API Gateway ist eine zentrale Schicht, die Client-Anfragen entgegennimmt, an Backend-Services weiterleitet und zusätzliche Funktionen wie Authentifizierung, Rate Limiting und Logging übernimmt.

2. Was ist der Unterschied zwischen API Gateway und Reverse Proxy?

Ein Reverse Proxy leitet Anfragen weiter. Ein API Gateway erweitert dies um Funktionen wie Authentifizierung, Rate Limiting, Caching, Monitoring und Protokollumwandlung. Jedes API Gateway ist ein Reverse Proxy, aber nicht jeder Reverse Proxy ist ein vollständiges Gateway.

3. Was ist Kong?

Kong ist ein Open-Source API Gateway, das auf Nginx und OpenResty basiert. Es bietet ein umfangreiches Plugin-System für Authentifizierung, Rate Limiting, Logging und Transformation.

4. Was ist Nginx?

Nginx ist ein leistungsfähiger Webserver und Reverse Proxy. Mit passender Konfiguration kann er als API Gateway genutzt werden und Routing, Load Balancing, SSL-Terminierung und Caching übernehmen.

5. Was ist Rate Limiting?

Rate Limiting begrenzt die Anzahl der Anfragen, die ein Client in einem Zeitraum senden darf. Es schützt Backend-Services vor Überlastung und Missbrauch.

6. Was ist Load Balancing?

Load Balancing verteilt Anfragen auf mehrere Backend-Instanzen. Das verbessert Verfügbarkeit, Skalierbarkeit und Ausfallsicherheit. Verfahren sind unter anderem Round Robin und Least Connections.

7. Was ist SSL-Terminierung?

SSL-Terminierung bedeutet, dass das Gateway die TLS-Verschlüsselung für eingehende Client-Anfragen übernimmt und diese intern unverschlüsselt oder mit internen Zertifikaten weiterleitet.

8. Was sind Plugins bei Kong?

Kong Plugins erweitern das Gateway um Funktionen wie Authentifizierung, Rate Limiting, CORS, Logging, Transformation und Caching. Sie können global, pro Service oder pro Route aktiviert werden.

9. Was ist ein Service Mesh?

Ein Service Mesh ist eine Infrastrukturschicht für die Kommunikation zwischen Services, beispielsweise mit Istio oder Linkerd. Ein API Gateway sitzt dagegen am Rand der Architektur und verwaltet externen Traffic.

10. Was ist Caching im API Gateway?

Caching im API Gateway speichert Antworten häufiger Anfragen zwischen. Das reduziert Backend-Last und Latenz. Es muss sorgfältig konfiguriert werden, um veraltete Daten zu vermeiden.

11. Sollte Authentifizierung im Gateway oder im Service erfolgen?

Authentifizierung wird oft im Gateway zentral durchgesetzt, um Redundanz zu vermeiden. Feingranulare Authorization sollte jedoch im Backend-Service erfolgen, weil dieser die Geschäftsregeln kennt.

12. Was ist ein Backends für Frontends Gateway?

Ein Backends für Frontends Gateway ist ein spezielles API Gateway pro Client-Typ, beispielsweise eines für Mobile Apps und eines für Web-Frontends. So kann jedes Gateway auf die spezifischen Anforderungen zugeschnitten werden.

13. Was ist ein Health Check?

Ein Health Check prüft regelmäßig, ob Backend-Instanzen funktionsfähig sind. Ausgefallene Instanzen werden aus dem Load Balancing genommen, bis sie wieder gesund sind.

14. Was ist ein Nginx Upstream?

Ein Nginx Upstream ist eine Gruppe von Backend-Servern, die Nginx gemeinsam ansteuern kann. Upstreams sind die Grundlage für Load Balancing mit Nginx.

15. Was ist der Vorteil eines zentralen API Gateways?

Ein zentrales Gateway vereint Sicherheit, Monitoring, Routing und Skalierung an einem Punkt. Es vereinfacht die Verwaltung, reduziert Redundanz und entkoppelt Clients von Backend-Details.

Quellen

  1. https://docs.konghq.com/
  2. https://nginx.org/en/docs/
  3. https://microservices.io/patterns/apigateway.html

Buchempfehlungen zur API-Entwicklung

Wenn Du Dich weiter mit API Gateways, Microservices und API-Architektur beschäftigen möchtest, empfehlen wir Dir die folgenden Bücher:

Keine Bücher für Kategorie "api-development" gefunden.

Zurück zum Blog
Share:

Ähnliche Beiträge