# 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.