Archivos separados sin raíz http: middlewares.yml, routers.yml, services.yml
This commit is contained in:
@@ -5,7 +5,10 @@ Este directorio contiene configuración que Traefik recarga automáticamente sin
|
||||
## Archivos
|
||||
|
||||
- **middlewares.yml**: Middlewares reutilizables (headers seguridad, rate limit, auth, etc.)
|
||||
- **routers.yml**: Ejemplos de routers y servicios estáticos (alternativa a labels Docker)
|
||||
- **routers.yml**: Routers HTTP/HTTPS (ejemplos comentados)
|
||||
- **services.yml**: Servicios backend (ejemplos comentados)
|
||||
|
||||
**Nota:** Los archivos NO usan la raíz `http:` porque Traefik los carga automáticamente bajo `http.middlewares`, `http.routers`, y `http.services` respectivamente.
|
||||
|
||||
## Autenticación Básica
|
||||
|
||||
|
||||
@@ -1,108 +0,0 @@
|
||||
# ============================================
|
||||
# CONFIGURACIÓN DINÁMICA DE TRAEFIK
|
||||
# ============================================
|
||||
# Este archivo contiene middlewares, routers y servicios
|
||||
# Traefik recarga automáticamente los cambios (~10s)
|
||||
|
||||
http:
|
||||
# ============================================
|
||||
# MIDDLEWARES
|
||||
# ============================================
|
||||
middlewares:
|
||||
# Headers de seguridad
|
||||
security-headers:
|
||||
headers:
|
||||
stsSeconds: 63072000
|
||||
forceSTSHeader: true
|
||||
stsIncludeSubdomains: true
|
||||
stsPreload: true
|
||||
frameDeny: true
|
||||
contentTypeNosniff: true
|
||||
browserXssFilter: true
|
||||
referrerPolicy: "strict-origin-when-cross-origin"
|
||||
customResponseHeaders:
|
||||
X-Robots-Tag: "none,noarchive,nosnippet,notranslate,noimageindex"
|
||||
|
||||
# Rate limiting
|
||||
rate-limit:
|
||||
rateLimit:
|
||||
average: 100
|
||||
burst: 200
|
||||
period: 1m
|
||||
|
||||
# IP Allow List (ejemplo - ajusta tus IPs)
|
||||
ip-allowlist:
|
||||
ipAllowList:
|
||||
sourceRange:
|
||||
- "127.0.0.1/32"
|
||||
- "10.0.0.0/8"
|
||||
- "172.16.0.0/12"
|
||||
- "192.168.0.0/16"
|
||||
|
||||
# Autenticación básica (genera hash con: docker run --rm httpd:alpine htpasswd -nbB admin tu_password)
|
||||
auth-basic:
|
||||
basicAuth:
|
||||
users:
|
||||
- "admin:$2y$05$example_hash_CHANGE_THIS" # CAMBIA ESTE HASH
|
||||
|
||||
# Redirect www a root
|
||||
redirect-www:
|
||||
redirectRegex:
|
||||
regex: "^https?://www\\.(.+)"
|
||||
replacement: "https://${1}"
|
||||
permanent: true
|
||||
|
||||
# ============================================
|
||||
# ROUTERS (Ejemplos comentados)
|
||||
# ============================================
|
||||
# routers:
|
||||
# # Ejemplo: Router para aplicación web con HTTPS y middlewares
|
||||
# whoami:
|
||||
# rule: "Host(`whoami.tudominio.com`)"
|
||||
# entryPoints:
|
||||
# - websecure
|
||||
# middlewares:
|
||||
# - security-headers
|
||||
# - rate-limit
|
||||
# service: whoami-service
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
#
|
||||
# # Ejemplo: Router con autenticación básica y restricción IP
|
||||
# admin-panel:
|
||||
# rule: "Host(`admin.tudominio.com`)"
|
||||
# entryPoints:
|
||||
# - websecure
|
||||
# middlewares:
|
||||
# - auth-basic
|
||||
# - ip-allowlist
|
||||
# - security-headers
|
||||
# service: admin-service
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
|
||||
# ============================================
|
||||
# SERVICES (Ejemplos comentados)
|
||||
# ============================================
|
||||
# services:
|
||||
# # Ejemplo: Servicio apuntando a contenedor local
|
||||
# whoami-service:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: "http://whoami:80"
|
||||
#
|
||||
# # Ejemplo: Servicio apuntando a servidor externo
|
||||
# admin-service:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: "http://192.168.1.100:8080"
|
||||
#
|
||||
# # Ejemplo: Servicio con health check
|
||||
# api-service:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: "http://api:3000"
|
||||
# healthCheck:
|
||||
# path: "/health"
|
||||
# interval: "10s"
|
||||
# timeout: "3s"
|
||||
46
dynamic/middlewares.yml
Normal file
46
dynamic/middlewares.yml
Normal file
@@ -0,0 +1,46 @@
|
||||
# ============================================
|
||||
# MIDDLEWARES
|
||||
# ============================================
|
||||
|
||||
# Headers de seguridad
|
||||
security-headers:
|
||||
headers:
|
||||
stsSeconds: 63072000
|
||||
forceSTSHeader: true
|
||||
stsIncludeSubdomains: true
|
||||
stsPreload: true
|
||||
frameDeny: true
|
||||
contentTypeNosniff: true
|
||||
browserXssFilter: true
|
||||
referrerPolicy: "strict-origin-when-cross-origin"
|
||||
customResponseHeaders:
|
||||
X-Robots-Tag: "none,noarchive,nosnippet,notranslate,noimageindex"
|
||||
|
||||
# Rate limiting
|
||||
rate-limit:
|
||||
rateLimit:
|
||||
average: 100
|
||||
burst: 200
|
||||
period: 1m
|
||||
|
||||
# IP Allow List (ejemplo - ajusta tus IPs)
|
||||
ip-allowlist:
|
||||
ipAllowList:
|
||||
sourceRange:
|
||||
- "127.0.0.1/32"
|
||||
- "10.0.0.0/8"
|
||||
- "172.16.0.0/12"
|
||||
- "192.168.0.0/16"
|
||||
|
||||
# Autenticación básica (genera hash con: docker run --rm httpd:alpine htpasswd -nbB admin tu_password)
|
||||
auth-basic:
|
||||
basicAuth:
|
||||
users:
|
||||
- "admin:$2y$05$example_hash_CHANGE_THIS" # CAMBIA ESTE HASH
|
||||
|
||||
# Redirect www a root
|
||||
redirect-www:
|
||||
redirectRegex:
|
||||
regex: "^https?://www\\.(.+)"
|
||||
replacement: "https://${1}"
|
||||
permanent: true
|
||||
29
dynamic/routers.yml
Normal file
29
dynamic/routers.yml
Normal file
@@ -0,0 +1,29 @@
|
||||
# ============================================
|
||||
# ROUTERS Y SERVICIOS (Ejemplos comentados)
|
||||
# ============================================
|
||||
# Descomentar y adaptar según necesites
|
||||
|
||||
# Ejemplo: Router para aplicación web con HTTPS y middlewares
|
||||
# whoami:
|
||||
# rule: "Host(`whoami.tudominio.com`)"
|
||||
# entryPoints:
|
||||
# - websecure
|
||||
# middlewares:
|
||||
# - security-headers
|
||||
# - rate-limit
|
||||
# service: whoami-service
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
|
||||
# Ejemplo: Router con autenticación básica y restricción IP
|
||||
# admin-panel:
|
||||
# rule: "Host(`admin.tudominio.com`)"
|
||||
# entryPoints:
|
||||
# - websecure
|
||||
# middlewares:
|
||||
# - auth-basic
|
||||
# - ip-allowlist
|
||||
# - security-headers
|
||||
# service: admin-service
|
||||
# tls:
|
||||
# certResolver: letsencrypt
|
||||
26
dynamic/services.yml
Normal file
26
dynamic/services.yml
Normal file
@@ -0,0 +1,26 @@
|
||||
# ============================================
|
||||
# SERVICIOS (Ejemplos comentados)
|
||||
# ============================================
|
||||
# Descomentar y adaptar según necesites
|
||||
|
||||
# Ejemplo: Servicio apuntando a contenedor local
|
||||
# whoami-service:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: "http://whoami:80"
|
||||
|
||||
# Ejemplo: Servicio apuntando a servidor externo
|
||||
# admin-service:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: "http://192.168.1.100:8080"
|
||||
|
||||
# Ejemplo: Servicio con health check
|
||||
# api-service:
|
||||
# loadBalancer:
|
||||
# servers:
|
||||
# - url: "http://api:3000"
|
||||
# healthCheck:
|
||||
# path: "/health"
|
||||
# interval: "10s"
|
||||
# timeout: "3s"
|
||||
Reference in New Issue
Block a user