Me entusiasmó que F5 anunciara la adquisición de NGINX hace un año porque, como veterano de F5, sabía que NGINX encajaba a la perfección. Esa impresión se confirmó cuando, en una de nuestras primeras reuniones conjuntas, los empleados de NGINX hablaron de algo muy importante para mí: su compromiso con la «comunidad». Desde que me incorporé al equipo de NGINX como responsable de producto, he tenido el placer de ver ese compromiso en acción y he podido colaborar más estrechamente con la comunidad.
La comunidad de NGINX se une durante la pandemia de COVID-19
Quienes trabajamos con código abierto solemos utilizar el término «comunidad» para referirnos a las personas que apoyan un proyecto de código abierto aportando código. Aunque su labor es importante, solo representan una pequeña parte de la comunidad de NGINX. Entonces, ¿quiénes son los demás miembros de la comunidad? También valoramos a quienes:
- Usáis NGINX en los proyectos que compartís en GitHub
- Confía en NGINX para ofrecer sitios web, aplicaciones y API de forma segura a tus usuarios
- Escribe entradas de blog sobre cómo instalar y utilizar NGINX
- Ayuda a los usuarios de NGINX en foros públicos
En los últimos meses, los miembros de la comunidad de NGINX se han unido de verdad para apoyarse mutuamente y ayudar a las numerosas organizaciones que tienen dificultades para mantener sus operaciones durante la pandemia de COVID‑19. Muchos de vosotros habéis señalado sitios web que podrían beneficiarse del software de NGINX, o incluso habéis dedicado vuestro tiempo y experiencia a explicar cómo configurar NGINX para obtener un rendimiento óptimo. Para aportar nuestro granito de arena, hemos publicado «Recursos gratuitos para sitios web afectados por la COVID‑19» y nos ha entusiasmado ver cómo la comunidad se ha volcado en apoyar a los nuevos usuarios de NGINX.
Como parte de nuestros esfuerzos por ayudar a las organizaciones a hacer frente al aumento del tráfico y añadir nuevas funcionalidades, hemos proporcionado hasta cinco instancias gratuitas de NGINX Plus a organizaciones que se encuentran en primera línea de la pandemia. Entre ellas se incluyen proveedores de servicios médicos, organismos públicos y, lo que resulta más relevante para este blog, centros escolares, universidades y organizaciones sin ánimo de lucro centradas en la educación. Hemos detectado entre estas organizaciones un caso de uso cada vez más habitual que probablemente no le sorprenda: la transmisión de vídeo en directo.
Con el cierre de centros educativos en todo el mundo y la rápida implantación de la enseñanza a distancia, esperamos que el uso del vídeo en streaming aumente exponencialmente durante las próximas semanas y meses. En el resto de este blog explico cómo puede utilizar NGINX Open Source y NGINX Plus para ofrecer streaming de vídeo estable, seguro y escalable.
¡Muchísimas gracias a James Jones, arquitecto de soluciones técnicas de NGINX, por grabar los vídeos de demostración que acompañan a este blog!
Transmisión de vídeo en directo y almacenamiento de vídeos con NGINX Open Source
Nuestra solución para la transmisión de vídeo aprovecha el módulo del protocolo de mensajería en tiempo real (RTMP) para NGINX. En este vídeo, James explica el proceso paso a paso:
Para que no tengas que tomar notas mientras ves la demostración de James, hemos recopilado todos los comandos y la configuración en las siguientes secciones.
- Instalación de las herramientas de compilación
- Instalación de dependencias
- Compilar NGINX con el módulo RTMP
- Configuración de NGINX
- Validación de la configuración e inicio de NGINX
- Prueba de los métodos de reproducción
Una nota importante: ¡No olvides la seguridad!
Las configuraciones de NGINX que se presentan en este blog no incluyen medidas de seguridad para restringir quién puede ver su transmisión de vídeo. Hay varias formas de proteger sus transmisiones mediante la aplicación de front-end que utilizan los espectadores para ver el vídeo, como permitir el acceso únicamente desde determinadas direcciones IP o exigir que los espectadores se autentiquen.
Instalación de las herramientas de compilación
Antes de compilar NGINX, debe tener instaladas algunas herramientas básicas de compilación: autoconf, gcc, git y make. Para descargarlas e instalarlas, ejecute el comando correspondiente a su sistema operativo (si no aparece aquí, consulte la documentación del proveedor del sistema operativo).
- Para Debian y Ubuntu:
$ sudo apt update$ sudo apt install build-essential git- Para CentOS, Oracle Linux y RHEL:
$ sudo yum update$ sudo yum groupinstall "Development Tools"
$ sudo yum install gitInstalación de dependencias
La compilación de NGINX también requiere varias dependencias: expresiones regulares compatibles con Perl (PCRE), OpenSSL y zlib para la compresión.
Instalación de dependencias con un gestor de paquetes
La forma más sencilla de descargar e instalar las dependencias es mediante un gestor de paquetes. Ejecute el comando correspondiente a su sistema operativo (si no aparece aquí, consulte la documentación del proveedor del sistema operativo).
- Para Debian y Ubuntu:
$ sudo apt install libpcre3-dev libssl-dev zlib1g-dev- Para CentOS, Oracle Linux y RHEL:
$ sudo yum groupinstall pcre-devel zlib-devel openssl-develInstalación de dependencias desde el código fuente
Si, por el contrario, desea compilar e instalar las dependencias a partir del código fuente, consulte nuestras instrucciones.
Compilar NGINX con el módulo RTMP
Para completar la compilación, clone los repositorios de GitHub de RTMP y NGINX, ejecute el comando configure de NGINX y, a continuación, compile NGINX.
$ cd /path/to/build/dir$ git clone https://github.com/arut/nginx-rtmp-module.git
$ git clone https://github.com/nginx/nginx.git
$ cd nginx
$ ./auto/configure --add-module=../nginx-rtmp-module
$ make
$ sudo make installConfiguración de NGINX
Puede configurar NGINX para transmitir vídeo mediante uno o ambos protocolos: HTTP Live Streaming (HLS) y Dynamic Adaptive Streaming over HTTP (DASH). Ambos ofrecen la misma funcionalidad, por lo que elegir uno u otro es realmente una cuestión de preferencia. Si no está familiarizado con ellos, consulte «HLS frente a DASH» en el blog de Vidbeo.
Configuración de HLS
Para HLS, la configuración es la siguiente. En la demostración (en el minuto 5:10), James explica la finalidad de estas directivas.
rtmp { server {
listen 1935;
application live {
live on;
interleave on;
hls on;
hls_path /tmp/hls;
hls_fragment 15s;
}
}
}
http {
default_type application/octet-stream;
server {
listen 80;
location /tv {
root /tmp/hls;
}
}
types {
application/vnd.apple.mpegurl m3u8;
video/mp2t ts;
text/html html;
}
}Configuración de DASH
Para DASH, la configuración es la siguiente. En la demostración, James combina HLS y DASH en una única configuración, ya que muchas directivas son iguales para ambos protocolos.
rtmp { server {
listen 1935;
application live {
live on;
dash on;
dash_path /tmp/dash;
dash_fragment 15s;
}
}
}
http {
server {
listen 80;
location /tv {
root /tmp/dash;
}
}
types {
text/html html;
application/dash+xml mpd;
}
}Validación de la configuración e inicio de NGINX
Siempre es recomendable validar la configuración de NGINX para asegurarse de que no haya errores de sintaxis. Ejecute este comando:
$ sudo nginx -tnginx: the configuration file filename syntax is ok
nginx: configuration file filename test is successfulA continuación, ejecuta este comando para iniciar NGINX:
$ sudo nginxPrueba de los métodos de reproducción
Inicie la transmisión de vídeo. OBS Studio es una herramienta de código abierto muy utilizada que permite transmitir en directo desde su estación de trabajo a su servidor NGINX mediante la configuración de un servidor RTMP personalizado. Configure OBS para transmitir a rtmp://NGINX_server/tv/tv2, donde NGINX_server es la dirección IP o el nombre de host de su servidor NGINX. No se requiere ninguna clave de transmisión.
James no utiliza OBS en la demostración porque está transmitiendo vídeo desde un archivo en lugar de hacerlo en directo. Inicia la transmisión de vídeo (en el minuto 9:30) ejecutando el script stream.sh, cuyo contenido es el siguiente:
ffmpeg -re -I bbb_sunflower_1080p_60fps_normal.mp4 -vcodec copy -loop -1 -c:a aac -b:a 160k -ar 44100 -strict -2 -f flv rtmp:192.168.1.138/live/bbbThe video he is streaming (specified with the -I argument) is the open source Big Buck Bunny video from blender.org. For details about the other arguments, see the ffmpeg documentation.
Una vez que el vídeo se esté transmitiendo, puede comprobar que NGINX lo sirve correctamente mediante los protocolos que ha configurado. James abre tres instancias del reproductor multimedia VLC y accede a la URL correspondiente a cada método de reproducción. En las URL, NGINX_server es la dirección IP o el nombre de host de su servidor NGINX:
- RTMP – rtmp://NGINX_server/live/bbb
- HLS – http://NGINX_server/live/bbb.m3u8
- DASH – http://NGINX_server/live/bbb.mpd
Mejora de la experiencia de usuario con NGINX Plus
Si está creando una videoteca o un curso, es posible que necesite funcionalidades que vayan más allá de lo que ofrece NGINX Open Source. NGINX Plus incluye funcionalidades avanzadas para mejorar el rendimiento y la experiencia del usuario final mediante módulos precompilados. Puede:
- Admite una mayor escalabilidad almacenando vídeos en caché
- Ofrecer servicios de vídeo bajo demanda (VOD)
- Gestiona los costes y la capacidad de streaming limitando el ancho de banda
Durante la pandemia de COVID‑19, NGINX ofrece una licencia gratuita de un año para un máximo de cinco instancias de NGINX Plus a organizaciones de los sectores educativo, de la Administración pública y sin ánimo de lucro (sujeta a revisión y aprobación). Para obtener más información, consulte Recursos gratuitos para sitios web afectados por la COVID‑19.
Para incorporar el módulo RTMP a NGINX Plus, debe cargarlo dinámicamente. Consulte la Guía de administración de NGINX Plus.
En esta segunda demostración, James muestra lo fácil que es configurar NGINX Plus como equilibrador de carga para tres servidores de vídeo mediante Ansible y Terraform:
Para acceder a los archivos que James utiliza en la segunda demostración, consulta su repositorio de GitHub.
Estamos juntos en esto
Si tienes problemas para implementar la transmisión de vídeo o cualquier otro caso de uso, ¡estamos aquí para ayudarte! Los empleados de NGINX y la comunidad supervisan el canal de NGINX en Stack Overflow1 y responden a las preguntas y solicitudes lo antes posible.
Si trabaja para una organización que se encuentra en primera línea frente a la pandemia y tiene necesidades avanzadas, es posible que cumpla los requisitos para obtener las licencias de NGINX Plus mencionadas anteriormente, así como un nivel superior de F5 DNS Load Balancer Cloud Service. Consulte Recursos gratuitos para sitios web afectados por la COVID‑19 para obtener más información.
Consulta también ese blog para ver un resumen de formas sencillas de mejorar el rendimiento de un sitio web con recursos gratuitos de NGINX y F5.
1Stack Overflow es un sitio web de terceros y no está afiliado a F5, Inc. F5 y sus filiales declinan toda responsabilidad por el contenido (incluida la información general y las soluciones propuestas a preguntas) publicado en Stack Overflow o en cualquier otro sitio web de terceros.
Sobre el autor
Artículos relacionados del blog
Únete a F5 NGINX en AppWorld 2024
Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.
Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.
Exposición de APIs en Kubernetes
La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».
NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.
Presentamos NGINX Plus R22
NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.
Presentamos NGINX Plus R17
NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.