Configurar Nginx como balanceador de carga

Probado en Ubuntu server 24.04

Requisitos previos:
  • Tener un servidor con Nginx recien instalado. Para ejemplo usaremos la dirección IP 192.168.1.200.
  • Tener varias instancias de una webapp Spring Boot corriendo en el puerto 8080 en diferentes servidores. Por ejemplo 3 instancias en las direcciones IP 192,168.1.201,192,168.1.202 y 192,168.1.203. De preferencia ya configuradas como servicios.
Paso 1: Borrar configuración de Nginx por defecto.

El archivo /etc/nginx/sites-available/default tiene la configuración del servidor web que viene por defecto instalado en Nginx, que solo muestra una página de bienvenida en el puerto 80. Ese archivo lo podemos eliminar, así como su enlace simbólico (/etc/nginx/sites-enabled/default) que se usa para habilitar el sitio.

Bash
sudo rm /etc/nginx/sites-available/default
sudo rm /etc/nginx/sites-enabled/default

Paso 2: Crear la configuración para balancear la carga con 3 servidores

Crea un archivo de configuración para el dominio principal en /etc/nginx/sites-available/controlgastospersonales.app:

Bash
sudo nano /etc/nginx/sites-available/controlgastospersonales.app

Agregar el siguiente contenido para la configuración del balanceador de carga:

Bash
upstream myapp1 {
  server 192.168.1.201:8080;
  server 192.168.1.202:8080;
  server 192.168.1.203:8080;
}

server {
  listen 80;

  location / {
			 proxy_pass http://myapp1;
  }
}

Paso 3: Probar y Recargar Nginx

Antes de recargar Nginx, verifica que no haya errores en la configuración:

Bash
sudo nginx -t

Se debería ver una salida como la siguiente:

Bash
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Si no hay errores, recarga Nginx para que los cambios surtan efecto:

Bash
sudo systemctl reload nginx