Extra Guia de Redes de Computadores • Trilha Progressiva em 4 Níveis


🎯 Nível 1: Fundamentos

Problema 10.1 — Forward Proxy vs Reverse Proxy

Contexto: Diferencie a finalidade de um Forward Proxy de um Reverse Proxy.

Resultado Esperado

- Forward Proxy (Proxy Direto): Fica à frente dos clientes (usuários internos) para controlar/filtrar o acesso à Internet externa.
- Reverse Proxy (Proxy Reverso): Fica à frente dos servidores (backend) para receber o tráfego da Internet pública e distribuí-lo com segurança para a rede interna.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_10_1_SeuNome.md
  2. Envie na tarefa: Atividade Cap 10 - Proxy Reverso
🔑 Gabarito de Código & Solução Comentada
- Forward Proxy: Protege clientes.
- Reverse Proxy: Protege servidores.

🎯 Nível 2: Prática

Problema 10.2 — Configuração de Roteamento de Microsserviços no Nginx

Configure um server block no Nginx roteando /api/auth/ para http://127.0.0.1:4000/ e /api/pagamentos/ para http://127.0.0.1:5000/, passando os cabeçalhos de Host e X-Real-IP.

🔑 Gabarito de Código & Solução Comentada
server {
    listen 80;
    server_name api.minhaempresa.com;

    location /api/auth/ {
        proxy_pass http://127.0.0.1:4000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /api/pagamentos/ {
        proxy_pass http://127.0.0.1:5000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

🎯 Nível 3: Integração

Problema 10.3 — Suporte a WebSockets e Reescrita de URLs (URL Rewriting)

Adicione ao Nginx o roteamento do endpoint de WebSocket /ws habilitando os headers Upgrade e Connection, além de reescrever requisições legadas /v1/users/(.*) para /api/v2/users/$1.

🔑 Gabarito de Código & Solução Comentada
# Suporte a WebSocket:
location /ws {
    proxy_pass http://127.0.0.1:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
}

# Reescrita de URL Regex com preservação de parâmetros:
location /v1/users/ {
    rewrite ^/v1/users/(.*)$ /api/v2/users/$1 break;
    proxy_pass http://127.0.0.1:3000;
}

🎯 Nível 4: Desafio

Problema 10.4 — Arquitetura de SSL Offloading com Terminação TLS e Buffering de Alta Escala

Projete uma configuração corporativa de Nginx com terminação TLS 1.3, buffer de corpo de requisições de 128MB com streaming em disco e timeouts otimizados para microsserviços de backend que processam uploads de arquivos pesados.

🔑 Gabarito de Código & Solução Comentada
server {
    listen 443 ssl http2;
    server_name uploads.empresa.com;

    # SSL Offloading:
    ssl_certificate /etc/ssl/certs/empresa.crt;
    ssl_certificate_key /etc/ssl/private/empresa.key;
    ssl_protocols TLSv1.3;

    # Otimização de Buffers e Uploads Pesados:
    client_max_body_size 128M;
    client_body_buffer_size 1M;
    client_body_timeout 120s;
    
    proxy_connect_timeout 60s;
    proxy_send_timeout 120s;
    proxy_read_timeout 120s;
    
    # Desativação de buffer de resposta para streaming de upload direto:
    proxy_buffering off;
    proxy_request_buffering off;

    location / {
        proxy_pass http://upload-service-upstream;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}