🧩 Exercícios: Proxy Reverso e Roteamento de Microsserviços
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)
- Salve o arquivo como:
Atividade_10_1_SeuNome.md - 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;
}
}