Nginx 1.18.0 ya está aquí y estos son sus cambios más importantes

abril 21, 2020 , 0 Comments

Después de un año de desarrollo, se introdujo una nueva rama estable del popular servidor HTTP de alto rendimiento y un servidor proxy multiprotocolo “Nginx 1.18.0”, que incorporaba los cambios acumulados en el marco de la rama principal 1.17.x.

Para quienes desconocen de Nginx deben saber que este​ es un servidor web/proxy inverso ligero de alto rendimiento y un proxy para protocolos de correo electrónico (IMAP/POP3). Nginx es software libre y de código abierto, licenciado bajo la Licencia BSD simplificada, además de que es multiplataforma, por lo que puede ser utilizado en sistemas tipo Unix, GNU/Linux, BSD, Solaris, Mac OS X y Windows.

Cabe señalar que existen dos versiones de Nginx, OSS Nginx y Nginx Plus (la version comercial). Nginx Plus ofrece funcionalidades adicionales que no son incluidas en OSS Nginx.

¿Qué hay de nuevo en Nginx 1.18.0?

En esta nueva version de Nginx 1.18.0, se ha agregado diversas directivas las cuales añaden algunas funcionalidades al servidor, tal es el caso de la nueva directiva limit_req_dry_run, que activa el modo de ejecución de prueba, que no aplica restricciones en la intensidad de las solicitudes de procesamiento (sin un límite de velocidad), pero continúa monitoreando el número de solicitudes fuera de los límites en la memoria compartida.

Otra de las directivas añadidas es  limit_conn_dry_run, que pone el módulo ngx_http_limit_conn_module en modo de ejecución de prueba, en el que el número de conexiones no está limitado, sino que se tiene en cuenta.

Por otro lado también podremos encontrar auth_delay, que le permite agregar un retraso a las solicitudes no autorizadas con un código de respuesta de 401 para reducir la intensidad de la selección de contraseña y proteger contra ataques que manipulan operaciones de ataque de tiempo al acceder a sistemas restringidos por contraseña, el resultado de una subconsulta o JWT ( JSON Web Token).

Se agregó soporte para variables en las directivaslimit_rate” y “limit_rate_after“, así como en las directivas “proxy_upload_rate” y “proxy_download_rate” del módulo de flujo.

La directiva grpc_pass agregó soporte para usar una variable en el parámetro que define la dirección. Si la dirección se especifica como un nombre de dominio, el nombre se busca entre los grupos de servidores descritos y, si no se encuentra, se determina utilizando el resolutor;

Se han agregado nuevas variables proxy_protocol_server_addr y proxy_protocol_server_port, que contienen la dirección y el puerto del servidor obtenidos del encabezado del protocolo PROXY.

De los demás cambios que se mencionan en el anuncio de esta nueva version:

  • La variable limit_conn_status se ha agregado al módulo ngx_stream_limit_conn_module, que almacena el resultado del límite de número de conexiones: PASSED, REJECTED y REJECTED_DRY_RUN.
  • La variable $ limit_req_status se ha agregado al módulo ngx_http_limit_req_module , que almacena el resultado de limitar la velocidad de recepción de solicitudes: PASSED, DELAYED, REJECTED, DELAYED_DRY_RUN y REJECTED_DRY_RUN.
  • Por defecto, se proporciona el ensamblaje del módulo ngx_http_postpone_filter_module.
  • Se agregó soporte para cambiar los bloques de ubicación con nombre utilizando el método $ r-> internal_redirect () proporcionado por el intérprete incorporado Perl. Este método ahora implica el manejo de URI con caracteres escapados.
  • Cuando se usa la directiva hash en el bloque de configuración ascendente para organizar el equilibrio de carga con el enlace del cliente al servidor, si la clave está vacía, el modo round-robin ahora se activa.
  • Se agregó soporte para llamadas ioctl (FIONREAD), si están disponibles, para evitar leer desde una conexión rápida durante mucho tiempo.

Finalmente, se menciona que en el futuro, todos los cambios en la rama estable 1.18 se asociarán con la eliminación de errores y vulnerabilidades graves.

Ademas de que pronto se formará la rama principal de nginx 1.19, en cuyo marco continuará el desarrollo de nuevas características. Para los usuarios comunes que no tienen la tarea de garantizar la compatibilidad con módulos de terceros, se recomienda utilizar la rama principal, sobre la base de las cuales se forman las versiones del producto comercial Nginx Plus cada tres meses.

Si quieres conocer más al respecto sobre los cambios implementados en esta nueva version, puedes consultar los detalles en el siguiente enlace. 


Some say he’s half man half fish, others say he’s more of a seventy/thirty split. Either way he’s a fishy bastard.