Información General sobre las Nuevas Características en Apache HTTP Server 2.4

Este documento describe algunos de los principales cambios entre las versiones 2.2 y 2.4 del Servidor Apache HTTP. Para las nuevas características desde versión 2.0, consulte el documento 2.2 nuevas características.

Mejoras en el Core
Cargas de MPM en Tiempo de Ejecución
Múltiples MPMs ahora se pueden construir como módulos dinámicos de forma que pueden ser cargados en tiempo de compilación. El MPM de elección se puede configurar en tiempo de ejecución a través de LoadModule .
Evento MPM
El Evento MPM ya no es experimental, lo cuál ahora está totalmente soportado.
Soporte Asíncrono (Asynchronous)
Mejor soporte para lectura y escritura asíncrona para soporte de MPM y otras plataformas.
Configuración del Nivel de Log (LogLevel) por Módulo y Directorio
El LogLevel puede ser configurado ahora por módulo y por directorio. Nuevos niveles de trace1 a trace8 se han añadido por encima de la etiqueta de nivel de registro de log debug.
Secciones de Configuración por Petición
If, ElseIf, y Else se pueden usar para establecer los criterios de configuración por cada petición.
Analizador de Expresión de Uso General
Un nuevo analizador de expresiones permite especificar condiciones complejas utilizando una sintaxis común en directivas como SetEnvIfExpr, RewriteCond, Header, If, entre otras.
KeepAliveTimeout en Milisegundos
Ahora es posible especificar KeepAliveTimeout en milisegundos.
Directiva NameVirtualHost
Ya no es necesario y ahora está en desuso.
Anular Configuración
La nueva directiva AllowOverrideList permite un control más exhaustivo de que directivas se permiten en los archivos .htaccess.
Variables de los Archivos de Configuración
Ahora es posible Definir variables en la configuración, lo que permite una representación más clara si el mismo valor se utiliza en muchos lugares en la configuración.
Reducción del Uso de Memoria
A pesar de muchas de las nuevas características, 2.4.x tiende a usar menos memoria que la versión 2.2.x.
Nuevos Módulos
mod_proxy_fcgi
Protocolo FastCGI backend paramod_proxy
mod_proxy_scgi
Protocolo SCGI backend para mod_proxy
mod_proxy_express
Proporciona una configuración masiva y dinámica de proxys inversos para mod_proxy
mod_remoteip
Reemplaza la dirección IP remota cliente aparente y nombre de host para la solicitud con la lista de direcciones IP presentada por un proxy o un balanceador de carga a través de las cabeceras de solicitud.
mod_heartmonitor, mod_lbmethod_heartbeat
Permite a mod_proxy_balancer basar las decisiones del balanceo de carga según el número de conexiones activas en los servidores de back-end.
mod_proxy_html
antiguamente un módulo de terceros, esto apoya la fijación de enlaces HTML en un proxy inverso, situación en la que el servidor genera URLs que no son válidas para los clientes del proxy.
mod_sed
Un reemplazo avanzado de mod_substitute, permite editar el cuerpo de la respuesta con el poder lleno de sed.
mod_auth_form
Habilitar la autenticación basada en formularios.
mod_session
Permite el uso de estado de sesión para clientes, utilizando cookies o almacenamiento en una base de datos.
mod_allowmethods
Nuevo módulo para restringir ciertos métodos HTTP sin interferir con autenticación o autorización.
mod_lua
Embebe el lenguajeLua en httpd, para la configuración y las funciones lógicas de negocios pequeños. (Experimental)
mod_log_debug
Permite añadir mensajes de depuración personalizados en las diferentes fases del procesamiento de la solicitud.
mod_buffer
Proporciona almacenamiento en búfer para los filtros de entrada y salida de las pilas
mod_data
Convierte la respuesta del cuerpo en una dirección URL de datos RFC2397
mod_ratelimit
Proporciona limitación de velocidad en el ancho de banda para los clientes
mod_request
Proporciona filtros para manejar y hacer el cuerpo de la petición HTTP disponibles
mod_reflector
Proporciona Reflexión del cuerpo de la petición como una respuesta a través de la pila de filtro de salida.
mod_slotmem_shm
Proporciona un proveedor de memoria compartida basada en huecos (ala the scoreboard).
mod_xml2enc
Anteriormente un módulo de terceros, que apoya la internacionalización en módulos de filtro (markup-aware) basada en libxml2.
mod_macro (disponible desde la versión 2.4.5)
Provee macros para los archivos de configuración
mod_proxy_wstunnel (disponible desde la versión 2.4.5)
Soporte a túneles web-socket.
mod_authnz_fcgi (disponible desde la versión 2.4.10)
Habilitar aplicaciones autorizadas FastCGI para autenticar y/o autorizar a los clientes.
mod_http2 (disponible desde la versión 2.4.17)
Soporte para la capa HTTP/2
mod_proxy_hcheck (disponible desde la versión 2.4.21)
Soporta controles dinámicos propios del estado de servidores proxys remotos
mod_brotli (disponible desde la versión 2.4.26)
Soporte para el algoritmo de compresión Brotli.
mod_md (disponible desde la versión 2.4.30)
Soporte para el protocolo ACME para la automatización del proceso de aprovisionamiento de certificados.
mod_socache_redis (disponible desde la versión 2.4.39)
Soporte para caché de objetos compartidos basados en Redis.
Mejoras de Módulos.
mod_ssl
mod_ssl ahora puede ser configurado para utilizar un servidor OCSP para comprobar el estado de validez de un certificado de cliente. La respuesta por defecto es configurable, junto con la decisión sobre si se debe preferir el "responder" designado en el certificado de cliente en sí.
mod_ssl ahora también es compatible con "OCSP stapling", una respuesta de OCSP al inicial TLS "Handshake" con marca de tiempo firmado por la CA , en el que el servidor obtiene de forma proactiva una verificación OCSP de su certificado y transmite esa o la del cliente durante el "Handshake".
mod_ssl Ahora se puede configurar para compartir los datos de sesión SSL entre servidores a través de memcached.
Claves de cifrado de tipo EC (Curva Elíptica en Inglés) son ahora soportadas junto con RSA y DSA.
Soporte de TLS-SRP (disponible en la versión 2.4.4 y posteriores).
mod_proxy
La directiva ProxyPass ahora está configurado de forma más óptima dentro de un bloque Location o LocationMatch, y ofrece una ventaja de rendimiento significativa sobre la sintaxis tradicional de dos parámetros cuando están presentes en gran número.
La dirección de origen utilizada para solicitudes de proxy es ahora configurable.
Soporte para sockets de dominio Unix en el backend (disponible en la versión 2.4.7 y posteriores).
mod_proxy_balancer
Más cambios en la configuración en tiempo de ejecución para BalancerMembers mediante el configurador del balanceador.
Se pueden agregar miembros adicionales a BalancerMembers en tiempo de ejecución mediante el configurador del balanceador.
Configuración de ejecución de un subconjunto de parámetros Balancer
BalancerMembers se puede establecer en "fuga" de modo que sólo responden a las sesiones problemáticas existentes, lo que les permite ser puestos con gracia fuera de línea.
Configuración del balanceador de carga pueden ser persistentes después de un reinicio.
mod_cache
En el módulo mod_cache se puede añadir filtro de cache en determinado punto en la cadena de filtro, para proveer mejor control de la caché
mod_cache Puede cachear ahora peticiones de tipo HEAD.
Siendo posible ahora las directivas mod_cache ser configuradas por directorio en vez de por servidor.
La URL base de las URLs cacheadas se pueden personalizar, de tal forma que un cluster de cachés puede compartir el mismo prefijo URL de punto final.
mod_cache ahora es capaz de servir a los datos en caché antigua cuando un motor no está disponible (error 5xx).
mod_cache ahora puede insertar HIT/MISS/REVALIDATE en una cabecera de tipo X-Cache.
mod_include
Soporte al atributo 'onerror' dentro del elemento 'include', lo que permite mostar un documento de error cuando hay un error en vez de la cadena de error por defecto.
mod_cgi, mod_include, mod_isapi, ...
La traducción de cabeceras a variables de entorno es más estricta que antes para mitigar algunos de los posibles ataques de cross-site scripting, a través de la inyección de cabecera. Las cabeceras que contienen carácteres no válidos (incluyendo guiones bajos) son descartadas de forma silenciosa. Las variables de entorno en Apache tienen algunos consejos en como trabajar con clientes con sistemas heredados rotos que requieren de este tipo de cabeceras. (Esto afecta a todos los módulos que usan éstas variables de entorno.)
mod_authz_core Autorización Lógica de Contenedores
Ahora puede ser especificada una lógica avanzada de autorización, usando la directiva Require y las directivas de los contenedores asociados, tales como RequireAll.
mod_rewrite
mod_rewrite añade los flags [QSD] (Query String Discard) y [END] para las directivas RewriteRule para simplificar escenarios de reescritura comunes.
Añade la posibilidad de usar expresiones buleanas complejas en RewriteCond.
Permite el uso de queris SQL como funciones de RewriteMap.
mod_ldap, mod_authnz_ldap
mod_authnz_ldap agrega soporte a grupos anidados.
mod_ldap Incorpora LDAPConnectionPoolTTL, LDAPTimeout, y otras mejoras en el manejo de los "timeouts" tiempo agotado de espera. Esto es especialmente útil para escenarios en los que existe un firewall en modo "Stateful" que desecha conexiones inactivas a un servidor LDAP.
mod_ldap Incorpora LDAPLibraryDebug para registrar información de depuración proporcionada por el conjunto de herramientas usadas por LDAP.
mod_info
mod_info ahora puede volcar la configuración pre-procesada a la salida estándar durante el inicio del servidor.
mod_auth_basic
Nuevo mecanismo genérico para la autenticación básica falsa (disponible en la versión 2.4.5 y posteriores).
Mejoras para el Programa
fcgistarter
Nuevo demonio FastCGI como utilidad de arranque
htcacheclean
Ahora las URLs cacheadas actualmente, pueden ser listadas, con meta-datos adicionales incluidos.
Permite el borrado explicito y selectivo de URLs cacheadas.
Los tamaños de archivo ahora se pueden redondear hasta el tamaño de bloque determinado, por lo que los límites de tamaño se asemeja más estrechamente con el tamaño real en el disco.
El tamaño de la caché ahora puede ser limitado por el número de i-nodos, en vez de o como añadido, al limite del tamaño del archivo en el disco.
rotatelogs
Ahora puede crear un enlace al propio fichero de log.
Ahora puede invocar a un escript personalizado pos-rotate.
htpasswd, htdbm
Soporta el algoritmo bcrypt (disponible en la versión 2.4.4 y posteriores).
Documentación
mod_rewrite
La documentación de mod_rewrite ha sido reorganizada y casi escrita por completo, poniendo énfasis en ejemplos y modos de empleo más comunes, así como enseñarle que otras soluciones son más apropiadas. La guía del módulo Rewrite es ahora ahora es una sección de nivel superior con mucho más detalle y una mejor organización.
mod_ssl
La documentación del módulo mod_ssl ha sido mejorada en gran medida, con más ejemplos a nivel de la instalación inicial, además del enfoque técnico anterior.
Guía de Cachés
La guía de caché ha sido reescrita para distinguir propiamente entre la caché del RFC2616 HTTP/1.1 y sus características aportadas por mod_cache, y el caso general de cache de valor/clave aportado por la interfaz socache, así como cubrir temas específicos como los mecanismos de caché aportados por el módulo mod_file_cache.
Cambios en los Desarrollos de Módulos
Añadido Hook de Comprobación de Configuración
El nuevo Hook, check_config, ha sido añadido el cuál se ejecuta entre los hooks pre_config y open_logs. También se ejecuta antes del hook test_config cuando la opción -t se le pasa al httpd. El hook check_config permite a los módulos revisar los valores en las directivas de configuraciones de forma independiente y ajustarlos mientras mensajes pueden seguir siendo logados a la consola. El usuario puede así ser alertado de problemas de mala configuración antes de que la función hook open_logs redireccione la salida de la consola al log de error.
Añadido un Analizador de Expresiones
Ahora tenemos un analizador de expresiones de propósito general, y su API está expuesta en ap_expr.h. Esto es una adaptación del que había anteriormente implementado en mod_ssl.
Autorización Lógica de Contenedores
Los módulos de autorización ahora se registran como un proveedor, mediante ap_register_auth_provider(), para soportar lógicas de autorización avanzadas, como la directiva RequireAll.
Interfaz de Almacenamiento en Caché de Objetos Pequeños
La cabecera ap_socache.h expone una interfaz basada en proveedor de objetos de datos para la captura de pequeños, basado en la aplicación anterior de caché de sesión del módulo mod_ssl. Los proveedores que utilizan una memoria compartida de búfer cíclico, archivos dbf basados en disco, y una memoria caché distribuida memcache están soportados actualmente.
Añadido Hook de Estado de la Caché
El módulo mod_cache ahora incluye un nuevo hook cache_status, que es llamado cuando las decisiones de caché son conocidas. Se provee una implementación por defecto que añade a la cabecera de la respuesta de forma opcional X-Cache y X-Cache-Detail.

La documentación de desarrolladores contiene una lista detallada de los cambios realizados en la API.