Servidor HTTP
O servidor HTTP (http.service) escuta em uma porta e hospeda roteadores, endpoints e handlers de arquivos estáticos.
Configuração
- 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 | Padrão | Descrição |
|---|---|---|---|
addr |
string | obrigatório | Endereço de escuta (:8080, 0.0.0.0:443) |
timeouts.read |
duration | - | Timeout de leitura de requisição |
timeouts.write |
duration | - | Timeout de escrita de resposta |
timeouts.idle |
duration | - | Timeout de conexão keep-alive |
host.buffer_size |
int | 1024 | Tamanho do buffer de relay de mensagens |
host.worker_count |
int | NumCPU | Workers de relay de mensagens |
Timeouts
Configure timeouts para prevenir exaustão de recursos:
timeouts:
read: "10s" # Tempo máximo para ler headers da requisição
write: "60s" # Tempo máximo para escrever resposta
idle: "120s" # Timeout de keep-alive
read- Curto (5-10s) para APIs, mais longo para uploadswrite- Corresponda ao tempo esperado de geração de respostaidle- Balance reutilização de conexão vs uso de recursos
30s, 1m, 2h15m. Use 0 para desabilitar.
Configuração do Host
A seção host configura o relay de mensagens interno do servidor usado por componentes como WebSocket relay:
host:
buffer_size: 2048
worker_count: 8
| Campo | Padrão | Descrição |
|---|---|---|
buffer_size |
1024 | Capacidade da fila de mensagens por worker |
worker_count |
NumCPU | Goroutines de processamento paralelo de mensagens |
Segurança
Servidores HTTP podem ter um contexto de segurança padrão aplicado através da configuração de ciclo de vida:
lifecycle:
auto_start: true
security:
actor:
id: "gateway-service"
policies:
- app:http_access_policy
Isso define um ator e políticas base para todas as requisições. Para requisições autenticadas, o middleware token_auth sobrescreve o ator baseado no token validado, permitindo políticas de segurança por usuário.
Ciclo de Vida
Servidores são gerenciados pelo supervisor:
lifecycle:
auto_start: true
start_timeout: 30s
stop_timeout: 60s
depends_on:
- app:database
| Campo | Descrição |
|---|---|
auto_start |
Inicia quando a aplicação inicia |
start_timeout |
Tempo máximo de espera para servidor iniciar |
stop_timeout |
Tempo máximo para encerramento gracioso |
depends_on |
Inicia após essas entradas estarem prontas |
Conectando Componentes
Roteadores e handlers estáticos referenciam o servidor via metadados:
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últiplos Servidores
Execute servidores separados para propósitos diferentes:
entries:
# API pública
- name: public
kind: http.service
addr: ":8080"
lifecycle:
auto_start: true
# Admin (apenas localhost)
- name: admin
kind: http.service
addr: "127.0.0.1:9090"
lifecycle:
auto_start: true
Veja Também
- Roteamento - Roteadores e endpoints
- Arquivos Estáticos - Servindo arquivos estáticos
- Middleware - Middleware disponível
- Segurança - Políticas de segurança
- Relay WebSocket - Mensagens WebSocket