Skip to content
IRC-CodingIRC-Coding
API GatewayKongNginxLoad BalancingRate LimitingAPI Routing

API Gateway con Kong y Nginx: Routing y Seguridad

Aprende API Gateway: routing, load balancing, autenticación, rate limiting, Kong, Nginx y mejores prácticas.

S

schutzgeist

6 min read
API Gateway con Kong y Nginx: Routing y Seguridad

Fundamentos de API Gateway con Kong y Nginx

Un API Gateway es la capa central delante de tus APIs que combina enrutamiento, seguridad, distribución de carga y monitoreo.

Descripción compacta

Un API Gateway es un componente de servidor que recibe todas las solicitudes de cliente hacia una API y las reenvía a los servicios backend correctos. Además del enrutamiento, se encarga de autenticación, autorización, limitación de velocidad, terminación SSL, caching, balanceo de carga, conversión de protocolos y monitoreo. Las implementaciones conocidas incluyen Kong, Nginx, Envoy, Traefik, AWS API Gateway y Azure API Management. Kong se construye sobre Nginx y lo complementa con un sistema de plugins y gestión centralizada. Nginx en sí puede utilizarse como un Reverse Proxy potente y como API Gateway. Un API Gateway desacopla los clientes de los servicios backend, simplifica la seguridad y centralización, y es un componente importante en arquitecturas modernas de Microservices.

Componentes importantes

Enrutamiento

El enrutamiento es la tarea central de un API Gateway. Reenvía las solicitudes según la ruta, el método, los headers o el host al servicio backend correspondiente. Por ejemplo, las solicitudes a /orders se reenvían al servicio de órdenes y las solicitudes a /payments al servicio de pagos.

Reverse Proxy

Un API Gateway actúa como Reverse Proxy. Para los clientes, el Gateway es el único endpoint visible, mientras que los servicios backend permanecen ocultos detrás. Esto protege los servicios internos y permite su reemplazo sin afectar a los clientes.

Load Balancing

El balanceo de carga distribuye las solicitudes entrantes entre múltiples instancias de un servicio backend. Esto mejora la disponibilidad y la escalabilidad. Los métodos comunes incluyen Round Robin, Least Connections e IP Hash. Los Health Checks detectan instancias fallidas y las retiran de la distribución.

Autenticación y autorización

El Gateway puede aplicar mecanismos de autenticación como OAuth2, JWT, API Keys o mTLS de forma centralizada. Valida tokens antes de que las solicitudes lleguen a los servicios backend e inserta información de usuario sanitizada cuando es necesario.

Rate Limiting y Throttling

El Rate Limiting limita la cantidad de solicitudes que un cliente puede enviar en un período de tiempo. El Throttling reduce la velocidad de las solicitudes bajo carga alta. Ambas medidas protegen los servicios backend contra sobrecarga y abuso. Pueden configurarse globalmente, por API o por cliente.

Terminación SSL

El Gateway se encarga del descifrado SSL-TLS y de la comunicación cifrada con los clientes. La comunicación interna hacia los servicios backend puede ser sin cifrar o usar certificados internos, lo que simplifica la administración.

Caching

Un API Gateway puede almacenar en caché las respuestas de solicitudes frecuentes para reducir la carga del backend y disminuir la latencia. El caching es especialmente útil para datos estáticos o que cambian raramente. Las claves de caché deben elegirse con cuidado para evitar respuestas incorrectas.

Conversión de protocolos

El Gateway puede traducir entre protocolos, por ejemplo entre HTTP/1.1 y HTTP/2, REST y gRPC, o WebSockets y TCP. Esto permite conectar clientes diferentes con servicios backend variados.

Logging y monitoreo

El Gateway es un punto central para logging y monitoreo. Registra solicitudes, respuestas, códigos de estado, latencias y errores. Herramientas como Prometheus, Grafana, ELK o Datadog pueden evaluar y visualizar estos datos.

Kong

Kong es un API Gateway Open Source popular que se basa en Nginx y OpenResty. Ofrece un amplio sistema de plugins para autenticación, limitación de velocidad, logging, transformación y más. Kong puede ser auto-hospedado o utilizado como servicio en la nube.

Nginx como Gateway

Nginx es un servidor web y Reverse Proxy potente. Con la configuración adecuada, puede cumplir las tareas básicas de un API Gateway como enrutamiento, balanceo de carga, terminación SSL y caching. Para funcionalidades avanzadas de plugins, a menudo se utiliza Kong o Nginx Plus.

Ejemplo práctico

Una empresa ejecuta varios Microservices y usa Kong como API Gateway.

Configuración de Kong para dos servicios:

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: []

En este ejemplo, Kong reenvía las solicitudes a /api/v1/orders al servicio de órdenes y las solicitudes a /api/v1/payments al servicio de pagos. El plugin de rate limiting limita las solicitudes a 100 por minuto. El plugin JWT asegura que solo los tokens validados puedan acceder a las APIs.

FAQ: API Gateway con Kong y Nginx

1. ¿Qué es un API Gateway?

Un API Gateway es una capa central que recibe solicitudes de cliente, las reenvía a servicios backend y proporciona funcionalidades adicionales como autenticación, limitación de velocidad y logging.

2. ¿Cuál es la diferencia entre API Gateway y Reverse Proxy?

Un Reverse Proxy reenvía solicitudes. Un API Gateway amplía esto con funcionalidades como autenticación, limitación de velocidad, caching, monitoreo y conversión de protocolos. Todo API Gateway es un Reverse Proxy, pero no todo Reverse Proxy es un Gateway completo.

3. ¿Qué es Kong?

Kong es un API Gateway Open Source que se basa en Nginx y OpenResty. Proporciona un amplio sistema de plugins para autenticación, limitación de velocidad, logging y transformación.

4. ¿Qué es Nginx?

Nginx es un servidor web y Reverse Proxy potente. Con la configuración apropiada, puede usarse como API Gateway para manejar enrutamiento, balanceo de carga, terminación SSL y caching.

5. ¿Qué es Rate Limiting?

El Rate Limiting limita la cantidad de solicitudes que un cliente puede enviar en un período de tiempo. Protege los servicios backend contra sobrecarga y abuso.

6. ¿Qué es Load Balancing?

El balanceo de carga distribuye las solicitudes entre múltiples instancias de backend. Mejora la disponibilidad, escalabilidad y tolerancia a fallos. Los métodos incluyen Round Robin y Least Connections.

7. ¿Qué es la terminación SSL?

La terminación SSL significa que el Gateway se encarga del descifrado TLS para las solicitudes de cliente entrantes y las reenvía internamente sin cifrar o con certificados internos.

8. ¿Qué son los plugins en Kong?

Los plugins de Kong extienden el Gateway con funcionalidades como autenticación, limitación de velocidad, CORS, logging, transformación y caching. Pueden activarse globalmente, por servicio o por ruta.

9. ¿Qué es un Service Mesh?

Un Service Mesh es una capa de infraestructura para la comunicación entre servicios, por ejemplo con Istio o Linkerd. Un API Gateway, en cambio, se sitúa en el borde de la arquitectura y gestiona el tráfico externo.

10. ¿Qué es el caching en un API Gateway?

El caching en un API Gateway almacena respuestas de solicitudes frecuentes. Reduce la carga del backend y la latencia. Debe configurarse cuidadosamente para evitar datos obsoletos.

11. ¿Debe ocurrir la autenticación en el Gateway o en el servicio?

La autenticación se aplica a menudo de forma centralizada en el Gateway para evitar redundancia. Sin embargo, la autorización detallada debe ocurrir en el servicio backend, que conoce las reglas de negocio.

12. ¿Qué es un Gateway Backends for Frontends?

Un Gateway Backends for Frontends es un API Gateway especializado por tipo de cliente, por ejemplo uno para aplicaciones móviles y otro para frontends web. Así cada Gateway puede adaptarse a los requisitos específicos.

13. ¿Qué es un Health Check?

Un Health Check verifica regularmente si las instancias de backend están funcionando. Las instancias fallidas se retiran del balanceo de carga hasta que vuelven a estar saludables.

14. ¿Qué es un Upstream de Nginx?

Un Upstream de Nginx es un grupo de servidores backend que Nginx puede alcanzar conjuntamente. Los Upstreams son la base para el balanceo de carga con Nginx.

15. ¿Cuál es la ventaja de un API Gateway centralizado?

Un Gateway centralizado reúne seguridad, monitoreo, enrutamiento y escalado en un único punto. Simplifica la administración, reduce redundancia y desacopla a los clientes de los detalles del backend.

Continúa en la ruta de aprendizaje de APIs

El siguiente artículo en la ruta de aprendizaje de APIs aborda API Gateway vs. Reverse Proxy: Diferencias y casos de uso – dos componentes de infraestructura que a menudo se confunden, pero que cumplen tareas diferentes.

Referencias

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

Libros recomendados para el desarrollo de APIs

Si deseas profundizar más en API Gateways, Microservices y arquitectura de APIs, te recomendamos los siguientes libros:

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

Volver al blog
Share:

Entradas relacionadas