🗺️ A Arquitetura de Gateway e Proxy Reverso em Produção

flowchart LR
    CLIENTE["👤 Clientes na Internet\n(HTTPS Porta 443)"]
    --> |"Único Ponto de Entrada"| PROXY["<b>Proxy Reverso (Nginx / HAProxy)</b>\nTerminação TLS 🔒 | Rate Limiting | WAF"]

    PROXY --> |"proxy_pass /api/v1/auth"| AUTH["Auth Service (Porta 3001)"]
    PROXY --> |"proxy_pass /api/v1/pedidos"| ORDERS["Orders Service (Porta 3002)"]
    PROXY --> |"proxy_pass /"| STATIC["Static Web SPA (Porta 80) ⚡"]

    style CLIENTE fill:#ede7f6,stroke:#512da8,stroke-width:1.5px
    style PROXY fill:#00897b,stroke:#004d40,stroke-width:2px,color:#ffffff
    style AUTH fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
    style ORDERS fill:#e8f5e9,stroke:#4caf50,stroke-width:1.5px
    style STATIC fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px

📖 Fundamentos e Aplicação

Diferente do Proxy Direto (Forward Proxy) — que protege clientes internos ao acessar a web pública —, o Proxy Reverso (Reverse Proxy) protege e orquestra servidores internos de backend, atuando como o ponto único de entrada (Edge Gateway) da infraestrutura.

1. Funções Críticas do Proxy Reverso:

  • Terminação TLS (SSL/TLS Offloading): Descriptografa o tráfego HTTPS na borda da rede, aliviando a CPU dos microsserviços de backend para focarem estritamente na lógica de negócio.
  • Roteamento Baseado em Caminho e Host (Path-Based & Host-Based Routing): Direciona /api/usuarios para um pod e /api/pagamentos para outro.
  • Preservação de Identidade do Cliente: Encaminhamento obrigatório de cabeçalhos proxy:
    • X-Forwarded-For: O endereço IP público real do cliente original.
    • X-Forwarded-Proto: O protocolo de entrada (https).
    • X-Forwarded-Host: O host original requisitado.
  • Compressão Centralizada (Gzip / Brotli): Redução do tráfego antes do envio pela Internet.