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;
    }
}