Migración de nginx a Angie#

Si estás cambiando de nginx a Angie, ¡enhorabuena! Tenemos una guía para ti.

Ten en cuenta que está diseñada para un escenario de reemplazo básico que se basa en una versión empaquetada de Angie. Si estás trabajando con contenedores, máquinas virtuales, rutas personalizadas o módulos, necesitarás ajustes adicionales.

Instalación de Angie#

Recomendamos usar los paquetes oficiales de nuestros repositorios; consulta los pasos de instalación de Angie para tu distribución. No inicies el servidor todavía; en su lugar, compruébalo con el comando sudo angie -V:

$ sudo angie -V

  Angie version: Angie/1.10.3
  nginx version: nginx/1.27.5
  built by gcc 11.4.0
  configure arguments: --prefix=/etc/angie --conf-path=/etc/angie/angie.conf ...

Como esto muestra, la configuración se encuentra en /etc/angie/ cuando Angie se instala desde un paquete.

Actualización de la configuración de Angie#

Angie generalmente requiere cambios mínimos en la configuración existente de nginx.

  1. Copia toda la configuración de nginx a /etc/angie/:

    $ sudo rsync -a --no-links /etc/nginx/ /etc/angie/
    

    Asumimos que la configuración de nginx está almacenada en /etc/nginx/; ajusta los pasos si tienes una ruta diferente.

  2. Renombra el archivo de configuración principal como espera Angie:

    $ sudo mv /etc/angie/nginx.conf /etc/angie/angie.conf
    
  3. Actualiza las rutas en toda la configuración de Angie, comenzando por el archivo de configuración principal. Los detalles dependen de cómo se instaló nginx, pero como mínimo necesitas actualizar lo siguiente.

    Cualquier ruta include que todavía apunte a /etc/nginx/:

    # include /etc/nginx/conf.d/*.conf;
    # include /etc/nginx/default.d/*.conf;
    # include /etc/nginx/http.d/*.conf;
    # include /etc/nginx/stream.d/*.conf;
    include /etc/angie/conf.d/*.conf;
    include /etc/angie/default.d/*.conf;
    include /etc/angie/http.d/*.conf;
    include /etc/angie/stream.d/*.conf;
    
    # include /etc/nginx/sites-enabled/*;
    include /etc/angie/sites-enabled/*;
    
    # include /etc/nginx/modules-enabled/*;
    include /etc/angie/modules-enabled/*;
    
    # include /etc/nginx/mime.types;
    include /etc/angie/mime.types;
    

    El archivo PID, que es importante para la gestión de procesos de Angie:

    # pid /var/run/nginx.pid;
    # -- o --
    # pid /run/nginx.pid;
    pid /run/angie.pid;
    

    Finalmente, el registro de acceso y el registro de errores:

    # access_log /var/log/nginx/access.log;
    access_log /var/log/angie/access.log;
    
    # error_log /var/log/nginx/error.log;
    error_log /var/log/angie/error.log;
    

Hosts Virtuales#

Si se utiliza el directorio sites-enabled/ para incluir hosts virtuales, actualízalo también:

# include /etc/nginx/sites-enabled/*;
include /etc/angie/sites-enabled/*;

Luego recrea los enlaces simbólicos en /etc/angie/sites-enabled/ para que todo funcione.

Lista los archivos de host virtual originales, por ejemplo:

$ ls -l /etc/nginx/sites-enabled/

  default -> /etc/nginx/sites-available/default

Observa su ubicación real; aquí es /etc/nginx/sites-available/.

Si no los copiaste a /etc/angie/ anteriormente, cópialos ahora:

$ sudo rsync -a /etc/nginx/sites-available/ /etc/angie/sites-available/

Finalmente, recrea cada enlace simbólico:

$ sudo ln -s /etc/angie/sites-available/default \
             /etc/angie/sites-enabled/default

Módulos Dinámicos#

Encuentra e instala equivalentes de Angie para todos los módulos dinámicos referenciados en la configuración de nginx, por ejemplo:

$ sudo nginx -T | grep load_module

  load_module modules/ngx_http_geoip2_module.so;
  load_module modules/ngx_stream_geoip2_module.so;
  ...

Esto significa que necesitas instalar el paquete angie-module-geoip2, y así sucesivamente.

Hay dos formas populares de incluir la configuración de módulos dinámicos:

Si los módulos dinámicos se incluyen a través de /usr/share/nginx/modules/, actualiza la ruta:

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
# include /usr/share/nginx/modules/*.conf;

include /usr/share/angie/modules/*.conf;

Luego copia los archivos de configuración del módulo:

$ sudo rsync -a /usr/share/nginx/modules/ /usr/share/angie/modules/

Finalmente, cambia la ruta load_module en cada archivo:

# load_module "/usr/lib64/nginx/modules/ngx_http_geoip2_module.so";
load_module "/usr/lib64/angie/modules/ngx_http_geoip2_module.so";

Directorio Raíz (Opcional)#

Si root apunta al directorio /usr/share/nginx/html/, puedes cambiar la directiva para que apunte a Angie.

Copia el directorio y actualiza el valor root en la configuración de Angie:

$ sudo rsync -a /usr/share/nginx/html/ /usr/share/angie/html/
# root /usr/share/nginx/html;
root /usr/share/angie/html;

Usuario y Grupo (Opcional)#

Aunque es suficiente dejar la directiva user como está, puedes usar cuentas de Angie para mayor flexibilidad.

Actualiza la configuración de user en la configuración de Angie:

# user www-data www-data;
user angie angie;

Cambia el propietario de todos los archivos de configuración, incluidos los archivos en /usr/share/angie/, por ejemplo:

$ sudo chown -R angie:angie /etc/angie/
$ sudo chown -R angie:angie /usr/share/angie/

Si la configuración de Angie tiene directivas root, cambia el propietario de los directorios especificados allí, por ejemplo:

$ sudo chown -R angie:angie /var/www/html/

Finalizando#

Para asegurarte de que no se haya pasado nada por alto, busca y corrige las menciones restantes de nginx en la configuración de Angie:

$ grep -rn --include='*.conf' 'nginx' /etc/angie/

Pruebas y Cambio#

Después de actualizar la configuración de Angie, el siguiente paso es verificar su sintaxis para asegurarte de que Angie pueda trabajar con ella, y luego hacer el cambio. Verifica que Angie acepte la nueva configuración:

$ sudo angie -t

Este comando analiza la configuración y reporta errores que impedirían el inicio de Angie; corrige cualquier problema y vuelve a ejecutar el comando.

Deteniendo nginx, Iniciando Angie#

Para minimizar el tiempo de inactividad, inicia Angie inmediatamente después de detener nginx:

$ sudo systemctl stop nginx && sudo systemctl start angie

Si es necesario, habilita el servicio Angie para que se inicie después del reinicio:

$ sudo systemctl enable angie

¡Migración completa! Eso es todo; eres increíble.

Deshabilitando nginx#

Después de confirmar que Angie está funcionando de manera estable, puedes deshabilitar o eliminar nginx para evitar conflictos.

Lo mínimo que puedes hacer es deshabilitar el servicio:

$ sudo systemctl disable nginx

Trabajando con Certificados SSL#

Si utilizaste Certbot para gestionar certificados SSL con nginx, seguirá funcionando con Angie.

Usando Certbot con Angie#

Dar soporte a Angie en Certbot requiere un esfuerzo mínimo, ya que Angie es retrocompatible con nginx. Para que Certbot funcione, es suficiente crear un enlace simbólico y especificar los parámetros apropiados:

# Crear un enlace simbólico para compatibilidad con Certbot
$ sudo ln -s /etc/angie/angie.conf /etc/angie/nginx.conf

# Obtener un certificado para un dominio
$ sudo certbot --nginx --nginx-server-root=/etc/angie --nginx-ctl=angie -d example.com -d www.example.com

# Renovar certificados automáticamente
$ sudo certbot renew

# Verificar el estado del certificado
$ sudo certbot certificates

Después de migrar a Angie, Certbot continuará renovando automáticamente los certificados a través de trabajos cron o temporizadores systemd configurados.

Migrando de Certbot al Módulo ACME Integrado#

Angie incluye un módulo ACME integrado, que te permite obtener y renovar certificados SSL automáticamente sin usar herramientas externas como Certbot.

Ventajas del módulo ACME integrado:

  • integración completa con la configuración de Angie;

  • renovación automática de certificados sin servicios adicionales;

  • soporte para validación HTTP y DNS;

  • capacidad de obtener certificados wildcard.

Para instrucciones detalladas sobre cómo migrar de Certbot al módulo ACME integrado, consulta la sección Migración desde certbot.

Configurando Características de Angie#

Es seguro asumir que estás migrando por una razón. ¿Por qué no ir más allá y configurar algunas de las características adicionales disponibles en Angie y Angie PRO que no están en nginx?