¿Cómo configurar un reenvío inverso?

La función de reenvío inverso de SSLcat se basa en el reenvío inteligente por dominio, compatible con múltiples protocolos y estrategias de equilibrio de carga. A continuación se detalla el método de configuración.

Estructura de configuración básica

El archivo de configuración de SSLcat utiliza el formato YAML, con la siguiente estructura básica:

# sslcat.conf
server:
  port: 443
  http_port: 80

# Configuración de reenvío inverso
proxies:
  - domain: "example.com"
    target: "http://localhost:3000"
    protocol: "http"
  
  - domain: "api.example.com"
    target: "https://backend.example.com"
    protocol: "https"
    ssl_verify: false

Configuración de dominio

Cada regla de proxy debe especificar un dominio y un servidor de destino:

Configuración de múltiples dominios

Puede configurar múltiples dominios para que apunten a diferentes servicios backend:

proxies:
  # Sitio principal
  - domain: "www.example.com"
    target: "http://localhost:3000"
    protocol: "http"
  
  # Servicio de API
  - domain: "api.example.com"
    target: "http://localhost:8080"
    protocol: "http"
  
  # Panel de administración
  - domain: "admin.example.com"
    target: "http://localhost:9000"
    protocol: "http"
  
  # Recursos estáticos
  - domain: "static.example.com"
    target: "http://localhost:4000"
    protocol: "http"

Configuración de equilibrio de carga

SSLcat admite múltiples estrategias de equilibrio de carga:

proxies:
  - domain: "app.example.com"
    targets:
      - "http://backend1.example.com:3000"
      - "http://backend2.example.com:3000"
      - "http://backend3.example.com:3000"
    protocol: "http"
    load_balance: "round_robin"  # Round Robin
    # load_balance: "least_conn"  # Menos conexiones
    # load_balance: "ip_hash"     # Hash de IP

Soporte de WebSocket

SSLcat admite de forma nativa el proxy WebSocket:

proxies:
  - domain: "ws.example.com"
    target: "ws://localhost:8080"
    protocol: "ws"
    websocket:
      enabled: true
      ping_interval: 30
      pong_timeout: 10

Configuración de comprobación de estado

Configure la comprobación de estado de los servicios backend:

proxies:
  - domain: "app.example.com"
    target: "http://localhost:3000"
    protocol: "http"
    health_check:
      enabled: true
      path: "/health"
      interval: 30
      timeout: 5
      retries: 3

Configuración de encabezados de solicitud

Puede agregar o modificar encabezados de solicitud:

proxies:
  - domain: "api.example.com"
    target: "http://localhost:8080"
    protocol: "http"
    headers:
      add:
        X-Forwarded-Proto: "https"
        X-Real-IP: "$remote_addr"
      remove:
        - "X-Forwarded-For"

Reescritura de ruta

Admite la reescritura de la ruta de la URL:

proxies:
  - domain: "api.example.com"
    target: "http://localhost:8080"
    protocol: "http"
    path_rewrite:
      "/v1/api": "/api"
      "/old": "/new"

Configuración del grupo de conexiones

Optimice el rendimiento del grupo de conexiones:

proxies:
  - domain: "app.example.com"
    target: "http://localhost:3000"
    protocol: "http"
    connection_pool:
      max_connections: 100
      max_idle_connections: 10
      idle_timeout: 90
      keep_alive: true

Configuración de conmutación por error

Configure la conmutación por error de los servicios backend:

proxies:
  - domain: "app.example.com"
    targets:
      - "http://primary.example.com:3000"
      - "http://backup1.example.com:3000"
      - "http://backup2.example.com:3000"
    protocol: "http"
    failover:
      enabled: true
      max_failures: 3
      recovery_time: 60

Configuración de SSL

Configure la conexión SSL con el backend:

proxies:
  - domain: "secure.example.com"
    target: "https://backend.example.com"
    protocol: "https"
    ssl:
      verify: true
      cert_file: "/path/to/ca.crt"
      key_file: "/path/to/ca.key"
      insecure_skip_verify: false

Validación de la configuración

Valide la configuración antes de iniciar:

# Validar la sintaxis del archivo de configuración
sslcat --config sslcat.conf --check

# Probar la configuración
sslcat --config sslcat.conf --test

# Iniciar el servicio
sslcat --config sslcat.conf

Monitoreo y depuración

SSLcat proporciona estadísticas detalladas del proxy:

Mejores prácticas

Sugerencias para la configuración del reenvío inverso:

Con estas configuraciones, puede configurar de forma flexible la función de reenvío inverso de SSLcat para satisfacer diversas y complejas necesidades comerciales.