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

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

Mejoras principales
Autenticación y Autorización
El paquete de los módulos de autenticación y autorización se han refactorizado. El nuevo módulo mod_authn_alias (eliminados en las versiones 2.3/2.4) puede simplificar de gran forma algunas configuraciones de autenticación. Vea también el cambio de nombres de los módulos, y los cambios para desarrolladores para más información sobre los cambios de como afectan a los usuarios, y a los que desarrollan módulos.
Caché
mod_cache, mod_cache_disk, y mod_mem_cache (eliminados en las versiones 2.3/2.4) han sufrido muchos cambios, y ahora se consideran en calidad de producción. El programa htcacheclean se ha introducido para limpiar los setups de mod_cache_disk.
Configuración
La capa de la configuración por defecto, se ha simplificado y modularizado. Se pueden utilizar fragmentos de configuración para habilitar las funciones de uso común que ahora se incluyen con Apache, y pueden ser fácilmente añadidos a la configuración del servidor principal.
Detención con elegancia
Los módulos prefork, worker y event MPMs(módulos de procesos múltiples) ahora permiten a httpd ser apagado/parado con elegancia mediante la señal graceful-stop. La directiva GracefulShutdownTimeout se ha añadidos para especificar un tiempo opcional, tras el cual el httpd se parará independientemente del estado de cualquier petición que se esté sirviendo.
Funcionalidad del Proxy
El nuevo módulo mod_proxy_balancer proporciona un servicio de balanceo de carga para el módulo mod_proxy. El nuevo módulo mod_proxy_ajp añade soporte para el Protocolo JServ versión 1.3 de Apache usado por Apache Tomcat.
Actualización de la Librería de Expresiones Regulares
Se ha incluido la versión 5.0 de Librería de Expresiones Regulares Compatibles Perl (PCRE). El programa httpd puede ser configurado para que use una instalación en el sistema de PCRE pasandole como parámetro --with-pcre al configure.
Filtrado Inteligente
mod_filter introduce una configuración dinámica a la cadena de filtro de salida. Habilita que los filtros sean insertados de forma condicional, basado en cualquier cabecera de petición o respuesta o una variable de entorno, y prescinde de las dependencias más problemáticas así como problemas de ordenación en la arquitectura 2.0.
Soporte de Grandes Ficheros
httpd es creado ahora con soporte para ficheros mayores de 2GB en los sistemas Unix modernos de 32-bits. También el soporte para el manejo de cuerpos de respuesta >2GB ha sido añadido.
Eventos MPM
El módulo event MPM usa un hilo separado para el manejo de las peticiones Keep Alive y aceptar las conexiones. Las peticiones de Keep Alive tradicionalmente han requerido un "worker" de httpd para su manejo. Este "worker" dedicado no puede ser utilizado otra vez hasta que el Keep Alive haya expirado su tiempo de conexión.
Soporte de Base de Datos SQL
El módulo mod_dbd, junto con el framework apr_dbd, nos trae soporte directo de SQL para los módulos que lo necesitan. Es compatible con la agrupación de conexiones en procesos MPM.
Mejoras en Módulos
Autenticación y Autorización
Los módulos en el directorio aaa se han renombrado y ofrecen mejor soporte para la autenticación implícita (digest). Por ejemplo: mod_auth se ha dividido ahora en mod_auth_basic y mod_authn_file; mod_auth_dbm ahora se llama mod_authn_dbm; mod_access ha sido renombrado a mod_authz_host. También hay un nuevo módulo mod_authn_alias( ya eliminado en las versiones 2.3/2.4) para simplificar algunas configuraciones de autenticación.
mod_authnz_ldap
Este módulo se ha traído de la versión 2.0 del módulo mod_auth_ldap a la versión 2.2 del framework de Autenticación/Autorización. Las nuevas características incluyen el uso de valores de LDAP y filtros de búsqueda complejos para la directiva Require.
mod_authz_owner
Un nuevo módulo que autoriza el acceso a ficheros basándose en el propietario del fichero en el sistema operativo.
mod_version
Este nuevo módulo permite que se habiliten bloques de configuración dependiendo de la versión del servidor.
mod_info
Se ha añadido un nuevo argumento al config que muestra las configuraciones de las directivas que se le pasan a Apache, incluyendo los nombres de los ficheros y en que linea se encuentra dicha configuración. Este módulo además muestra en orden todas las peticiones de hooks y información adicional a la hora de compilar, similar a httpd -V.
mod_ssl
Se ha añadido soporte para el RFC 2817, que permite conexiones para que se actualicen de texto plano al cifrado TLS.
mod_imagemap
mod_imap Se ha renombrado a mod_imagemap para evitar confusión en el usuario.
Mejoras de Programas
httpd
Se ha añadido una nueva opción en la línea de comandos -M, dicha opción lista todos los módulos que se cargan basándose en la configuración actual. A diferencia de la opción -l, esta lista incluye los DSOs cargados mediante el módulomod_so.
httxt2dbm
Un nuevo programa para generar archivos dbm desde archivos de texto como entrada, para su uso en RewriteMap con el mapa de tipo dbm.
Cambios para desarrolladores de Módulos
APR 1.0 API
Apache 2.2 usa la API de APR. Todas las funciones y símbolos obsoletas se han eliminado de APR y APR-Util. Para mas detalles sobre dichos cambios vaya a la página de APR.
Autenticación y Autorización
El paquete de módulos de autenticación y autorización se han renombrado como se muestra en las siguientes líneas:
  • mod_auth_* -> Módulos que implementan un mecanismo de autenticación por HTTP.
  • mod_authn_* -> Módulos que proporcionan un backend proveedor de autenticación.
  • mod_authz_* -> Módulos que implementan autorización (o acceso)
  • mod_authnz_* -> Módulo que implementa ambas opciones autenticación & autorización
Hay un nuevo esquema de proveedor de la autenticación en el backend lo que facilita en gran medida la construcción de nuevos motores de autenticación.
Registro de errores de Conexión
Una nueva función ap_log_cerror ha sido añadida para registrar los errores que ocurren en la conexión del cliente. Cuando se registra el error, el mensaje incluye la dirección IP del cliente.
Añadido Hooks para la configuración de Test
Un nuevo hook, test_config se ha añadido para ayudar a los módulos que necesitan ejecutar sólo código especial cuando el usuario pasa como parámetro -t a httpd.
Configuración de tamaño de pila para los procesos MPM's
Una nueva directiva, ThreadStackSize se ha añadido para configurar el tamaño de la pila de todos los hilos de MPMs. Esta directiva es requerida por algún módulo de terceros en plataformas que tienen por defecto una pila con un tamaño pequeño.
Manejo de protocolo para los filtros de salida
En el pasado, cada filtro ha sido responsable de garantizar que genera las cabeceras de respuesta correctas donde les afecta. Los filtros ahora delegan la administración común del protocolo a los módulos mod_filter, usando llamadas a ap_register_output_filter_protocol ó ap_filter_protocol.
Monitor de hooks añadido
Monitor hook habilita a los módulos a ejecutar tareas regulares o programadas en el proceso padre (raíz).
Cambio de expresiones regulares en la API
La cabecera pcreposix.h ya no esta disponible; se ha cambiado por la nueva ap_regex.h. La implementación POSIX.2 de regex.h expuesta por la cabecera antigua, está ahora disponible en el espacio de nombre con ap_ en la cabecera ap_regex.h. llama a regcomp, regexec y así sucesivamente pueden ser sustituidos por llamadas a ap_regcomp, ap_regexec.
DBD Framework (API de base de datos SQL)

Con Apache 1.x y 2.0, algunos módulos que requieren un backend de SQL deben tomar la responsabilidad de gestionar por sí mismos. Aparte de reinventar la rueda, esto puede llegar a ser ineficiente, por ejemplo cuando varios módulos cada uno mantiene su propia conexión.

Las versiones de Apache posteriores a la 2.1 proporciona la API de ap_dbd para el manejo de las conexiones a las bases de datos (incluyendo estrategia optimizadas para los hilos o no de MPMs), mientras que las versiones de APR 1.2 y posteriores proporciona la API apr_dbd para interactuar con la base de datos.

Los nuevos módulos DEBEN usar estas APIs para todas las operaciones en bases de datos SQL. Aplicaciones existentes DEBEN ser actualizadas para que lo usen cuando sea posible, de forma transparente o como opción recomendada para sus usuarios.