Icono del sitio Binario 0

Configuración de HAProxy como Proxy Inverso para Multidominios y Multibackend

Artículos Guías Manuales Sistemas Linux Windows Binario 0

Artículos Guías Manuales Sistemas Linux Windows Binario 0

FacebookEmailWhatsAppLinkedInRedditXShare

Este archivo de configuración de HAProxy actúa como un proxy inverso que dirige el tráfico entrante a diferentes backends (servidores de aplicaciones) en función del dominio solicitado. Esta configuración está optimizada para un entorno multi-dominio y multi-backend, donde se gestiona tanto tráfico HTTP como HTTPS (puertos 80 y 443). Se omiten estadísticas y opciones innecesarias, manteniendo solo lo esencial.

Secciones principales del archivo de configuración de HAProxy

La configuración de HAProxy se organiza en varias secciones que facilitan su configuración modular:

  1. Sección global: Define parámetros globales que afectan a toda la instancia de HAProxy.
  2. Sección defaults: Configura parámetros predeterminados para simplificar la definición de otras secciones.
  3. Sección frontend: Define las entradas de tráfico, es decir, las interfaces y puertos que HAProxy escucha.
  4. Sección backend: Define los servidores a los que HAProxy envía el tráfico en función de las reglas configuradas en el frontend.

Explicación de cada sección del archivo

1. Sección global

La sección global contiene configuraciones de nivel general. Aquí se define cómo HAProxy maneja el registro, los permisos y la ubicación de su ejecución. Estas opciones son:

2. Sección defaults

La sección defaults configura parámetros comunes para las demás secciones y evita redundancia en la configuración:

3. Sección frontend

La sección frontend configura las interfaces que HAProxy escucha y redirige el tráfico según el dominio o el SNI (Server Name Indication):

Configuración de HTTP (puerto 80)
Configuración de HTTPS (puerto 443)

4. Sección backend

La sección backend configura los servidores a los que se redirige el tráfico entrante de acuerdo con el dominio. Cada backend representa un servicio distinto y permite gestionar tanto tráfico HTTP como HTTPS:

En este archivo de ejemplo, los dominios son miweb1.com, miweb2.com, y miweb3.com, que se redirigen a diferentes servidores backend.

Archivo de Configuración de HAProxy

global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
user haproxy
group haproxy
daemon
maxconn 8192

defaults
log global
mode http
option httplog
option dontlognull
timeout http-request 60s
timeout connect 600s
timeout client 600s
timeout server 600s
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http

frontend www80_front
bind *:80
mode http
option httplog
option forwardfor

use_backend miweb1_80 if { hdr(host) -i miweb1.com }
use_backend miweb2_80 if { hdr(host) -i miweb2.com }
use_backend miweb3_80 if { hdr(host) -i miweb3.com }

frontend www443_front
mode tcp
option tcplog
bind *:443
tcp-request inspect-delay 3s
tcp-request content accept if { req_ssl_hello_type 1 }

use_backend miweb1_443 if { req.ssl_sni -i miweb1.com }
use_backend miweb2_443 if { req.ssl_sni -i miweb2.com }
use_backend miweb3_443 if { req.ssl_sni -i miweb3.com }

backend miweb1_80
mode http
server server1_80 192.168.50.10:80 send-proxy check

backend miweb1_443
mode tcp
server server1_443 192.168.50.10:443 send-proxy check

backend miweb2_80
mode http
server server2_80 192.168.50.11:80 send-proxy check

backend miweb2_443
mode tcp
server server2_443 192.168.50.11:443 send-proxy check

backend miweb3_80
mode http
server server3_80 192.168.50.12:80 send-proxy check

backend miweb3_443
mode tcp
server server3_443 192.168.50.12:443 send-proxy check

Este archivo está diseñado para que HAProxy funcione como proxy inverso, distribuyendo el tráfico en función del dominio solicitado. En este caso, cada dominio es gestionado por un backend diferente, lo que permite un control detallado sobre el tráfico de cada dominio y protocolo.

Salir de la versión móvil