Servidor HTTP
El servidor HTTP (http.service) escucha en un puerto y aloja routers, endpoints y manejadores de archivos estáticos.
Configuración
- name: gateway
kind: http.service
addr: ":8080"
timeouts:
read: "5s"
write: "30s"
idle: "60s"
host:
buffer_size: 1024
worker_count: 4
lifecycle:
auto_start: true
security:
actor:
id: "http-gateway"
policies:
- app:http_policy
| Campo | Tipo | Por Defecto | Descripción |
|---|---|---|---|
addr |
string | requerido | Dirección de escucha (:8080, 0.0.0.0:443) |
timeouts.read |
duration | - | Timeout de lectura de solicitud |
timeouts.write |
duration | - | Timeout de escritura de respuesta |
timeouts.idle |
duration | - | Timeout de conexión keep-alive |
host.buffer_size |
int | 1024 | Tamaño de buffer del relay de mensajes |
host.worker_count |
int | NumCPU | Workers del relay de mensajes |
Timeouts
Configure timeouts para prevenir agotamiento de recursos:
timeouts:
read: "10s" # Tiempo máximo para leer headers de solicitud
write: "60s" # Tiempo máximo para escribir respuesta
idle: "120s" # Timeout de keep-alive
read- Corto (5-10s) para APIs, más largo para uploadswrite- Coincidir con tiempo esperado de generación de respuestaidle- Balancear reutilización de conexión vs uso de recursos
30s, 1m, 2h15m. Use 0 para deshabilitar.
Configuración del Host
La sección host configura el relay interno de mensajes del servidor usado por componentes como WebSocket relay:
host:
buffer_size: 2048
worker_count: 8
| Campo | Por Defecto | Descripción |
|---|---|---|
buffer_size |
1024 | Capacidad de cola de mensajes por worker |
worker_count |
NumCPU | Goroutines de procesamiento paralelo de mensajes |
Seguridad
Los servidores HTTP pueden tener un contexto de seguridad por defecto aplicado a través de la configuración de ciclo de vida:
lifecycle:
auto_start: true
security:
actor:
id: "gateway-service"
policies:
- app:http_access_policy
Esto establece un actor y políticas base para todas las solicitudes. Para solicitudes autenticadas, el middleware token_auth sobrescribe el actor basado en el token validado, permitiendo políticas de seguridad por usuario.
Ciclo de Vida
Los servidores son gestionados por el supervisor:
lifecycle:
auto_start: true
start_timeout: 30s
stop_timeout: 60s
depends_on:
- app:database
| Campo | Descripción |
|---|---|
auto_start |
Iniciar cuando la aplicación inicia |
start_timeout |
Tiempo máximo para esperar que el servidor inicie |
stop_timeout |
Tiempo máximo para apagado graceful |
depends_on |
Iniciar después de que estas entradas estén listas |
Conectando Componentes
Routers y manejadores estáticos referencian el servidor vía metadatos:
entries:
- name: gateway
kind: http.service
addr: ":8080"
- name: api
kind: http.router
meta:
server: gateway
prefix: /api
- name: static
kind: http.static
meta:
server: gateway
path: /
fs: app:public
Múltiples Servidores
Ejecute servidores separados para diferentes propósitos:
entries:
# API Pública
- name: public
kind: http.service
addr: ":8080"
lifecycle:
auto_start: true
# Admin (solo localhost)
- name: admin
kind: http.service
addr: "127.0.0.1:9090"
lifecycle:
auto_start: true
Ver También
- Routing - Routers y endpoints
- Archivos Estáticos - Servicio de archivos estáticos
- Middleware - Middleware disponible
- Seguridad - Políticas de seguridad
- WebSocket Relay - Mensajería WebSocket