🔀 Cap 10: Proxy Reverso - Exemplos Práticos
Demonstrações práticas de configuração de Nginx como API Gateway e Proxy Reverso em Docker Compose.
🗺️ Fluxo de Encaminhamento de Headers Proxy em Mermaid
sequenceDiagram
autonumber
actor C as Cliente (IP: 200.150.10.5)
actor N as Nginx Proxy Reverso (IP Público)
actor B as Microsserviço Node.js (IP Privado 10.0.0.15)
C->>N: GET /pedidos HTTP/1.1<br/>Host: ecommerce.com
Note over N: Adiciona Headers de Rastreabilidade
N->>B: GET /pedidos HTTP/1.1<br/>X-Real-IP: 200.150.10.5<br/>X-Forwarded-For: 200.150.10.5<br/>X-Forwarded-Proto: https
B-->>N: 200 OK + JSON
N-->>C: 200 OK + JSON ⚡
📄 Exemplo 1: Arquivo docker-compose.yml com Nginx Reverse Proxy
version: '3.8'
services:
gateway:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
depends_on:
- app_usuarios
- app_produtos
app_usuarios:
image: node:20-alpine
command: node -e "const http=require('http'); http.createServer((q,s)=>s.end('Serviço Usuários')).listen(3000)"
app_produtos:
image: node:20-alpine
command: node -e "const http=require('http'); http.createServer((q,s)=>s.end('Serviço Produtos')).listen(3000)"
📄 Exemplo 2: Arquivo nginx.conf Correspondente
server {
listen 80;
location /usuarios/ {
proxy_pass http://app_usuarios:3000/;
proxy_set_header Host $host;
}
location /produtos/ {
proxy_pass http://app_produtos:3000/;
proxy_set_header Host $host;
}
}