[{"data":1,"prerenderedAt":181},["ShallowReactive",2],{"seo-verification":3,"blog-haproxy-en-un-vps-balanceo-de-carga-ma-es":6,"promo-bar-likely":180},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-haproxy-en-un-vps-balanceo-de-carga-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":123,"ctaBody":124,"ctaButton":125,"ctaUrl":126,"relatedPosts":127},142,"haproxy-en-un-vps-balanceo-de-carga",{"fr":12,"en":13,"ar":14,"es":10},"deployer-avec-haproxy-vps","haproxy-on-a-vps-load-balancing-and-high-availability","haproxy-على-خادم-vps-موازنة-الأحمال-والتوافر-العالي","HAProxy en VPS: balanceo de carga y alta disponibilidad","Instale HAProxy en un VPS para repartir el tráfico, vigilar los backends y preparar una arquitectura web más resiliente.",8,1,false,"2026-02-03T00:00:00+00:00","2026-10-13T14:10:29+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[28],{"id":23,"name":24,"slug":25,"color":26,"icon":25},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fdeployer-avec-haproxy-vps-poster.svg",{"categorySlug":33,"appSlug":34},"infra","haproxy","HAProxy es el estándar de facto para el balanceo de carga y la alta disponibilidad en servidores Linux. En un VPS ServOrbit, se instala en minutos a través del Marketplace y se configura enteramente desde el archivo `\u002Fetc\u002Fhaproxy\u002Fhaproxy.cfg`. Esta guía en profundidad cubre la configuración completa — frontend\u002Fbackend, ACL, terminación SSL\u002FTLS, health checks, página de estadísticas y solución de los errores más comunes — para que su infraestructura esté lista para producción.",[37,41,51,79,82,106,109,117,120],{"type":38,"title":39,"body":40},"h2","¿Por qué alojar HAProxy en un VPS dedicado?","HAProxy (High Availability Proxy) es un software de código abierto de reparto de carga y proxy TCP\u002FHTTP, reconocido por su rendimiento en producción. Alojarlo en un VPS dedicado le permite centralizar la distribución del tráfico entre sus servidores de aplicaciones, garantizar la continuidad del servicio ante el fallo de un nodo y gestionar con precisión las reglas de enrutamiento sin costos de licencia. En un solo VPS de 2 vCPU \u002F 2 GB RAM, HAProxy maneja sin esfuerzo miles de conexiones simultáneas.",{"type":42,"title":43,"items":44},"ul","Lo que puede hacer con HAProxy",[45,46,47,48,49,50],"Repartir el tráfico HTTP\u002FHTTPS entre varios servidores de aplicaciones con algoritmos configurables (roundrobin, leastconn, source…)","Montar un reverse proxy para exponer varios servicios internos detrás de una única dirección IP pública","Vigilar la salud de sus backends con health checks automáticos y retirar un servidor defectuoso sin interrumpir el servicio","Terminar las conexiones SSL\u002FTLS en el frontal (offloading) para liberar del cifrado a sus servidores de aplicaciones","Enrutar el tráfico por dominio o ruta con ACL (host_hdr, path_beg) en un único puerto 443","Consultar las estadísticas de tráfico en tiempo real desde la interfaz web integrada (stats uri \u002Fstats)",{"type":52,"title":53,"steps":54},"steps","Instalar y configurar HAProxy en su VPS ServOrbit",[55,58,61,64,67,70,73,76],{"title":56,"body":57},"Pedir un VPS Cloud ServOrbit e iniciar la instalación","Vaya a \u002Fvps-cloud y elija una oferta con al menos 2 vCPU y 2 GB de RAM. Desde el panel de su VPS, abra el Marketplace, busque «HAProxy» y haga clic en Instalar. El aprovisionamiento automático de ServOrbit instala HAProxy vía apt y activa el servicio — no hace falta conexión SSH en esta etapa. También puede instalarlo manualmente: `sudo apt update && sudo apt install -y haproxy`",{"title":59,"body":60},"Entender la estructura de haproxy.cfg","El archivo de configuración principal está en `\u002Fetc\u002Fhaproxy\u002Fhaproxy.cfg`. Se organiza en cuatro secciones: `global` (proceso, logs, límites del sistema), `defaults` (timeouts y modos heredados), `frontend` (puertos de escucha, reglas ACL) y `backend` (servidores destino, algoritmo, health checks). Edítelo con: `sudo nano \u002Fetc\u002Fhaproxy\u002Fhaproxy.cfg`",{"title":62,"body":63},"Configurar un frontend HTTP\u002FHTTPS y un backend completos","Aquí tiene una configuración completa para dos servidores de aplicaciones con terminación SSL:\n\n```\nglobal\n    log \u002Fdev\u002Flog local0\n    maxconn 50000\n    user haproxy\n    group haproxy\n\ndefaults\n    log     global\n    mode    http\n    option  httplog\n    timeout connect 5s\n    timeout client  30s\n    timeout server  30s\n\nfrontend http_front\n    bind *:80\n    redirect scheme https code 301\n\nfrontend https_front\n    bind *:443 ssl crt \u002Fetc\u002Fhaproxy\u002Fcerts\u002Fbundle.pem\n    default_backend app_servers\n\nbackend app_servers\n    balance roundrobin\n    option httpchk GET \u002Fhealth\n    server app1 192.168.1.10:3000 check weight 1 inter 2s fall 3 rise 2\n    server app2 192.168.1.11:3000 check weight 2 inter 2s fall 3 rise 2\n```\n\nEl parámetro `weight` envía proporcionalmente más tráfico hacia app2. La directiva `option httpchk GET \u002Fhealth` envía una petición HTTP al endpoint `\u002Fhealth` de cada backend para verificar que responde correctamente.",{"title":65,"body":66},"Configurar ACL para enrutamiento por dominio y ruta","Las ACL permiten enrutar el tráfico a distintos backends según el nombre de dominio o la ruta de la petición. Añada en su frontend:\n\n```\nfrontend https_front\n    bind *:443 ssl crt \u002Fetc\u002Fhaproxy\u002Fcerts\u002Fbundle.pem\n\n    acl host_api   hdr(host) -i api.misite.com\n    acl host_app   hdr(host) -i app.misite.com\n    acl path_admin path_beg  \u002Fadmin\n\n    use_backend api_servers   if host_api\n    use_backend admin_servers if path_admin\n    use_backend app_servers   if host_app\n    default_backend app_servers\n```\n\nLa directiva `hdr(host)` inspecciona la cabecera HTTP Host para identificar el dominio. `path_beg \u002Fadmin` enruta todas las peticiones cuya ruta empiece por `\u002Fadmin` hacia un backend dedicado.",{"title":68,"body":69},"Terminar SSL\u002FTLS con Let's Encrypt y crear el bundle PEM","HAProxy espera un archivo `.pem` que contenga el certificado, la cadena intermedia y la clave privada en ese orden. Tras obtener su certificado con Certbot, cree el bundle:\n\n```\nsudo mkdir -p \u002Fetc\u002Fhaproxy\u002Fcerts\nsudo cat \u002Fetc\u002Fletsencrypt\u002Flive\u002Fmisite.com\u002Ffullchain.pem \\\n         \u002Fetc\u002Fletsencrypt\u002Flive\u002Fmisite.com\u002Fprivkey.pem \\\n  | sudo tee \u002Fetc\u002Fhaproxy\u002Fcerts\u002Fbundle.pem\nsudo chmod 600 \u002Fetc\u002Fhaproxy\u002Fcerts\u002Fbundle.pem\n```\n\nPara automatizar la renovación, añada un post-hook en `\u002Fetc\u002Fletsencrypt\u002Frenewal-hooks\u002Fpost\u002Fhaproxy.sh` que reconstruya el bundle y ejecute `systemctl reload haproxy`.",{"title":71,"body":72},"Activar la página de estadísticas de HAProxy","La página de estadísticas integrada ofrece una vista en tiempo real del estado de cada frontend, backend y servidor. Añada un bloque frontend dedicado:\n\n```\nfrontend stats\n    bind *:8404\n    stats enable\n    stats uri \u002Fstats\n    stats refresh 10s\n    stats auth admin:ContraseñaSecreta\n    stats hide-version\n```\n\nAcceda a `http:\u002F\u002Fsu-ip:8404\u002Fstats`. El campo `stats auth` protege la página con autenticación HTTP Basic.",{"title":74,"body":75},"Validar la configuración y recargar sin interrupción","Antes de cualquier recarga, valide la sintaxis del archivo de configuración:\n\n```\nsudo haproxy -c -f \u002Fetc\u002Fhaproxy\u002Fhaproxy.cfg\n```\n\nSi el comando muestra `Configuration file is valid`, recargue HAProxy sin cortar las conexiones activas:\n\n```\nsudo systemctl reload haproxy\n```\n\nVerifique que el servicio está activo: `sudo systemctl status haproxy`. El comando `reload` (no `restart`) garantiza una recarga sin cortes: las conexiones establecidas terminan normalmente antes de que los workers antiguos se detengan.",{"title":77,"body":78},"Revisar los logs y monitorizar de forma continua","HAProxy envía sus logs a syslog. Consúltelos en tiempo real:\n\n```\nsudo journalctl -u haproxy -f\n```\n\nCada línea muestra el frontend, el backend, el servidor seleccionado, el código HTTP y los tiempos de conexión — imprescindible para diagnosticar un problema de enrutamiento o un backend lento.",{"type":38,"title":80,"body":81},"Health checks avanzados: detectar backends defectuosos","La directiva `check` en cada línea `server` activa los health checks. Por defecto, HAProxy abre una conexión TCP para verificar que el puerto responde. Para ir más lejos, `option httpchk GET \u002Fhealth` envía una petición HTTP real y espera un código 2xx. Los parámetros `inter 2s fall 3 rise 2` significan: comprobar cada 2 segundos, retirar el servidor tras 3 fallos consecutivos, reintegrarlo tras 2 éxitos. Añada `option redispatch` para que HAProxy reintente las peticiones fallidas en otro servidor del pool.",{"type":83,"title":84,"headers":85,"rows":89},"comparison","Algoritmos de balanceo de carga: ¿cuál elegir?",[86,87,88],"Algoritmo","Comportamiento","Ideal para",[90,94,98,102],[91,92,93],"roundrobin","Distribuye las peticiones por turnos entre los servidores. Soporta el parámetro weight.","Backends con capacidades equivalentes",[95,96,97],"leastconn","Envía cada nueva petición al servidor con menos conexiones activas.","Conexiones largas (WebSocket, base de datos)",[99,100,101],"source","Hace hash de la IP fuente del cliente para persistencia de sesión sin cookie.","Sesiones que no pueden compartirse entre backends",[103,104,105],"uri","Hace hash del URI de la petición para enrutar siempre al mismo backend.","Cachés de aplicación donde importa la localidad de los datos",{"type":38,"title":107,"body":108},"Solución de problemas: errores comunes y soluciones","Estos son los cinco errores más frecuentes al configurar o recargar HAProxy, con su causa y los pasos para resolverlos.",{"type":42,"title":110,"items":111},"Errores frecuentes y cómo resolverlos",[112,113,114,115,116],"**`[ALERT] Starting frontend http_front: cannot bind socket [0.0.0.0:80]`** — El puerto 80 ya está ocupado por otro proceso (nginx, apache2). Identifíquelo con `sudo ss -tlnp | grep ':80'`, detenga el servicio en conflicto (`sudo systemctl stop nginx`) y luego recargue HAProxy.","**`[WARNING] Server app_servers\u002Fapp1 is DOWN, reason: Layer4 connection problem`** — HAProxy no puede alcanzar la dirección IP o el puerto del backend. Compruebe que el servidor de aplicaciones está activo, que su cortafuegos permite conexiones desde la IP del VPS HAProxy y que la dirección en `haproxy.cfg` es correcta.","**`[ALERT] parsing [\u002Fetc\u002Fhaproxy\u002Fhaproxy.cfg:42] : unknown keyword 'serveur'`** — Error de sintaxis en el archivo de configuración. El comando `haproxy -c -f \u002Fetc\u002Fhaproxy\u002Fhaproxy.cfg` indica el número de línea exacto. Las palabras clave de HAProxy están en inglés: `server`, `frontend`, `backend`. Compruebe también la indentación (HAProxy solo acepta espacios).","**`[ALERT] ssl library has no cert for frontend https_front`** o **certificate expired** — El archivo bundle.pem está ausente, vacío o contiene un certificado caducado. Reconstruya el bundle desde los archivos Let's Encrypt actualizados (`fullchain.pem` + `privkey.pem`) y luego recargue.","**La página de estadísticas devuelve HTTP 403** — La directiva `stats auth` está configurada pero las credenciales no se envían, o la IP origen no está en una lista blanca `stats allow-from`. Compruebe la URL (`\u002Fstats` por defecto), las credenciales y añada temporalmente `stats allow-from 0.0.0.0\u002F0` para diagnosticar.",{"type":118,"body":119},"tip","Consejo: tras cada modificación de `haproxy.cfg`, ejecute siempre `sudo haproxy -c -f \u002Fetc\u002Fhaproxy\u002Fhaproxy.cfg` antes de `systemctl reload`. Esta validación de sintaxis tarda menos de un segundo y evita una interrupción del servicio si el archivo contiene un error.",{"type":118,"title":121,"body":122},"Para ir más lejos","La \u003Ca href=\"https:\u002F\u002Fdocs.haproxy.org\u002F\" target=\"_blank\" rel=\"noopener noreferrer\">documentación oficial de HAProxy\u003C\u002Fa> detalla todas las directivas, las opciones TCP avanzadas, el soporte QUIC\u002FHTTP3 (HAProxy 2.6+) y la configuración de alta disponibilidad con Keepalived para conmutación de IP virtual entre dos instancias de HAProxy. Esta guía cubre la puesta en línea en un VPS ServOrbit; la documentación del editor sigue siendo la referencia para los ajustes finos.","Despliegue HAProxy en unos minutos en un VPS Cloud ServOrbit","Lance ahora mismo su VPS Cloud ServOrbit e instale HAProxy con 1 clic desde el Marketplace — infraestructura profesional, sin complejidad.","Lanzar mi VPS Cloud","\u002Fvps-cloud",[128,144,161],{"id":129,"slug":130,"slugs":131,"title":135,"excerpt":136,"readTime":137,"views":23,"isPinned":19,"noindex":19,"publishedAt":138,"updatedAt":139,"category":140,"categories":141,"featuredImage":29,"bgImage":30,"posterImage":143,"relatedSolution":29},38,"desplegar-con-traefik",{"fr":132,"en":133,"ar":134,"es":130},"deployer-avec-traefik","deploy-your-applications-with-traefik-on-a-vps","انشر-تطبيقاتك-باستخدام-traefik-على-خادم-vps","Desplegar sus aplicaciones con Traefik en un VPS","Despliegue Traefik como reverse proxy en su VPS: enrutamiento automático de los contenedores Docker, certificados SSL Let's Encrypt y balanceo de carga.",11,"2026-05-13T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[142],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-traefik-poster.svg",{"id":145,"slug":146,"slugs":147,"title":151,"excerpt":152,"readTime":153,"views":154,"isPinned":19,"noindex":19,"publishedAt":155,"updatedAt":156,"category":157,"categories":158,"featuredImage":29,"bgImage":30,"posterImage":160,"relatedSolution":29},37,"desplegar-con-nginx-proxy-manager",{"fr":148,"en":149,"ar":150,"es":146},"deployer-avec-nginx-proxy-manager","deploy-your-applications-with-nginx-proxy-manager-on-a-vps","انشر-تطبيقاتك-باستخدام-nginx-proxy-manager-على-خادم-vps","Desplegar sus aplicaciones con Nginx Proxy Manager en un VPS","Gestione dominios, SSL y reverse proxy de varios servicios en un VPS con Nginx Proxy Manager: instalación, redes Docker, errores 502 y ajustes avanzados.",10,7,"2026-05-14T00:00:00+00:00","2026-11-08T01:13:14+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[159],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-nginx-proxy-manager-poster.svg",{"id":162,"slug":163,"slugs":164,"title":168,"excerpt":169,"readTime":17,"views":170,"isPinned":19,"noindex":19,"publishedAt":171,"updatedAt":172,"category":173,"categories":174,"featuredImage":29,"bgImage":30,"posterImage":176,"relatedSolution":177},39,"desplegar-con-caddy",{"fr":165,"en":166,"ar":167,"es":163},"deployer-avec-caddy","deploy-your-applications-with-caddy-on-a-vps","انشر-تطبيقاتك-باستخدام-caddy-على-خادم-vps","Caddy como reverse proxy en VPS: guía completa","Instala y configura Caddy como reverse proxy en tu VPS: HTTPS automático con Let's Encrypt, múltiples apps, seguridad y solución de errores comunes.",4,"2026-05-12T00:00:00+00:00","2026-09-25T23:43:04+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":25},[175],{"id":23,"name":24,"slug":25,"color":26,"icon":25},"\u002Fblog\u002Fcovers\u002Fdeployer-avec-caddy-poster.svg",{"categorySlug":178,"appSlug":179},"despliegue-de-aplicaciones-devops","caddy",true,1794270606322]