---
queue_position: 32
title: "Flask em produção: rate limiting antes do proxy"
slug: flask-producao-rate-limiting-proxy
site_key: host-yousecure
canonical: https://yousecure.io/blog/flask-producao-rate-limiting-proxy
category: programming
cluster: apis-python
search_intent: informacional-pratica
funnel_stage: meio
author: "Host You Secure Team"
created_at: "2026-09-09T11:29:43-03:00"
planned_scheduled_at: null
status: queued-review
meta_description: "Implemente rate limiting em uma API Flask, p
Se este conteúdo faz parte do seu projeto
Escolha a VPS pelo uso, não pelo excesso
Escolha pelo uso: Basic para projetos pequenos, Performance para produção com múltiplos serviços e Ultra para cargas maiores.
Plano
Recursos
Mensal
Perfil
Basic
4 vCPU · 4 GB RAM · 100 GB NVMe
R$ 99
Site e projeto pequeno
Performance
6 vCPU · 12 GB RAM · 150 GB NVMe
R$ 169
Produção e múltiplos serviços
Ultra
8 vCPU · 20 GB RAM · 200 GB NVMe
R$ 269
Cargas maiores e mais margem
Prova técnica: no benchmark publicado da VM Performance, medimos 1.855 ev/s em 6 threads, 288 ev/s em 1 thread, 11.858 MiB/s de memória e 338 MB/s de escrita sequencial, com teste direto na VM e sem Cloudflare.
Valores mensais exibidos para referência. A renovação segue o ciclo e o preço vigente informado no checkout antes da contratação.
---
queue_position: 32
title: "Flask em produção: rate limiting antes do proxy"
slug: flask-producao-rate-limiting-proxy
site_key: host-yousecure
canonical: https://yousecure.io/blog/flask-producao-rate-limiting-proxy
category: programming
cluster: apis-python
search_intent: informacional-pratica
funnel_stage: meio
author: "Host You Secure Team"
created_at: "2026-09-09T11:29:43-03:00"
planned_scheduled_at: null
status: queued-review
meta_description: "Implemente rate limiting em uma API Flask, preserve o IP real atrás do proxy e trate 429 sem bloquear usuários legítimos."
excerpt: "Limitar requisições é uma decisão de capacidade e segurança; a chave é escolher identidade, janela e resposta observável."
quick_answer: "Aplique limite no ponto que enxerga a origem correta, use armazenamento compartilhado em múltiplas instâncias e responda 429 com Retry-After quando apropriado."
featured_image: images/32-flask-rate-limit.png
featured_image_alt: "Gateway controlando fluxo de requisições antes de uma API Flask"
tags: [flask, python, api, rate-limit, seguranca]
evidence_type: reproducible_procedure
evidence_environment: API Flask atrás de proxy reverso com Redis opcional para estado
evidence_procedure: "Configurar janela de limite, fazer requests de teste, validar 429 e conferir IP/headers."
evidence_observed_result: "O teste confirma se o limite é aplicado por cliente e não por todo o proxy."
evidence_limitation: "Limites adequados dependem de endpoint, autenticação, tráfego legítimo e múltiplas réplicas."
information_gain: "Foca na diferença entre proxy, aplicação e armazenamento compartilhado."
primary_cta: "Ver planos de VPS"
landing: /hosting_vps
---
# Flask em produção: rate limiting antes do proxy
## Resposta rápida
Rate limiting impede que uma origem consuma toda a capacidade de um endpoint. Em Flask atrás de Nginx, confirme como o IP real chega à aplicação, escolha uma chave de cliente e use armazenamento compartilhado quando houver mais de um processo. Ao exceder o limite, responda `429 Too Many Requests` e, quando fizer sentido, `Retry-After`.
## Defina o que está sendo protegido
Login, envio de formulário, webhook e consulta pública têm perfis diferentes. Um limite global pode proteger o servidor e ao mesmo tempo bloquear usuários legítimos. Separe por rota e, quando possível, por identidade autenticada; para endpoints anônimos, combine IP com outros sinais sem registrar dados além do necessário.
## Proxy e IP real
O proxy deve encaminhar headers de origem, mas a aplicação só deve confiar neles quando a cadeia de proxies confiáveis estiver configurada. Confiar em qualquer `X-Forwarded-For` permite que o cliente falsifique o IP e contorne o limite. Documente quantos proxies existem e use a configuração apropriada do framework/deployment.
## Exemplo de aplicação
Uma biblioteca de rate limiting para Flask pode usar Redis como backend. O desenho conceitual é:
```python
limiter.limit("30 per minute")(rota_publica)
```
O valor é ilustrativo, não uma recomendação universal. Teste com carga controlada e escolha janela, burst e mensagem conforme o endpoint. Em múltiplos workers, memória local não é suficiente para um limite global.
## Valide o comportamento
```bash
for i in $(seq 1 35); do
curl -s -o /dev/null -w '%{http_code}\n' https://api.exemplo.com/publica
done
```
Confirme a sequência de `2xx` e `429`, headers de resposta, logs sem segredo e retorno após a janela. Faça o teste em homologação ou em uma rota segura, nunca contra o checkout real.
## Evite efeitos colaterais
Não aplique o mesmo limite a healthchecks internos, callbacks confiáveis e usuários autenticados sem análise. Use listas de exceção pequenas e auditáveis. Rate limit não substitui validação de payload, autenticação, timeout ou fila para tarefas demoradas.
Uma VPS com observabilidade ajuda a diferenciar ataque, pico legítimo e gargalo de banco. [Veja os planos de VPS](https://yousecure.io/hosting_vps).
## Checklist
- [ ] Endpoint e objetivo do limite definidos.
- [ ] Proxy confiável configurado.
- [ ] Backend compartilhado quando necessário.
- [ ] `429` e retry testados.
- [ ] Logs e métricas não expõem dados sensíveis.
## FAQ
### Rate limit deve ficar no Nginx ou Flask?
Pode existir em ambos: proxy para proteção ampla e aplicação para regras de negócio. Evite duplicar limites sem entender o efeito.
### `429` significa que a API caiu?
Não. É uma resposta deliberada de excesso de requisições.
## Métricas mínimas
Conte requisições permitidas e limitadas por rota, identidade e status. Meça também tempo de espera e erros do backend. Uma queda de 429 pode significar que o limite está alto demais, não que a experiência melhorou. Um aumento pode ser ataque, cliente mal configurado ou mudança de comportamento. Não registre o telefone, token ou corpo completo como chave de diagnóstico; use identificadores minimizados e políticas de retenção compatíveis com o negócio.
Comentários (0)
Ainda não há comentários. Seja o primeiro!