Nginx Reverse Proxy con SSL y Docker Compose

Un proxy inverso es una pieza clave en cualquier infraestructura de servidores: permite centralizar la terminación SSL, ocultar las IPs de los servicios internos y balancear la carga.

1. Archivo docker-compose.yml

version: '3.8'

services:
  nginx-proxy:
    image: nginx:alpine
    container_name: nginx-proxy
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
      - ./conf.d:/etc/nginx/conf.d:ro
      - ./certs:/etc/nginx/certs:ro
    networks:
      - proxy-net

networks:
  proxy-net:
    external: true

2. Configuración de VirtualHost con Proxy Pass

server {
    listen 80;
    server_name servicio.danielsh.es;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name servicio.danielsh.es;

    ssl_certificate /etc/nginx/certs/fullchain.pem;
    ssl_certificate_key /etc/nginx/certs/privkey.pem;

    location / {
        proxy_pass http://contenedor_servicio:8080;
        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;
    }
}

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *