Dopo ben sette anni dal ramo 2.2, Apache Software Foundation ha annunciato il rilascio del ramo 2.4 del più celebre ed importante web server esistente, offrendo per il download la release 2.4.1 quale primo rilascio G.A. (i sysadmin dei sistemi server Linux – dove solitamente viene installato tale web server – aspetteranno che i manteiner della distribuzione aggiornino i repository ufficiali).
Performance migliorate, minor consumo di risorse e miglior concorrenza sono alcuni dei cantieri su cui gli sviluppatori del web/proxy server HTTP (“HTTPd”) hanno lavorato in questi anni, cominciando peraltro ad intravedere in nginx un serio ed accreditato rivale.
Così infatti si esprime Jim Jagielski, presidente dell’Apache Software Foundation:
What we have done is checked 2.4 against itself and other web-servers; in general, we find 2.4 to be the fastest version of Apache by far. We also show that as far as true performance is based – real world performance as seen by the end user – 2.4 is as fast, and even faster than some of the servers who may be “better” known as being “fast”, like nginx.
I differenti MPMs (Multi-Processing Modules) disponibili permettono al web server di venire incontro ad ogni esigenza: il prefork MPM mode (usato tipicamente con moduli non thread-safe quali PHP e per il quale il server lancia un processo per ogni connessione) è adatto a richieste/risposte “super veloci”, mentre il nuovo event MPM mode (un miglioramento del worker MPM mode, per il quale Apache gestisce le connessioni mediante thread lanciati da pochi processi figli ma ne riduce lo “spreco” quando una connessione sia “alive” ma non attiva) risulta adatto ad un uso concurrency-tagged. Questa modalità risulta una delle principali caratteristiche della release 2.4.
Oltre a quanto citato, modifiche importanti sono rappresentate dal supporto per l’I/O asincrono, dalla configurazione dinamica del reverse proxy, dal miglior “tuning” su timeout e settaggi sui limiti delle risorse e dal miglior “tuning” del modulo di cache, ora più adatto a server ad alto traffico e ai proxy.
Inoltre:
- Run-time Loadable MPMs: più moduli MPM possono esser aggiunti come caricabili in compile-time e l’MPM di utilizzo scelto a run-time.
- Per-module and per-directory LogLevel configuration: il LogLevel può essere ora configurato per-modulo e per-directory.
- Per-request configuration sections: le sezioni If, ElseIf ed Else possono essere usate per criteri di configurazione per-richiesta.
- General-purpose expression parser: un nuovo parser permette di specificare condizioni complesse in direttive quali SetEnvIfExpr, RewriteCond, Header,
e altre. - Override Configuration: la nuova direttiva AllowOverrideList consente un miglior controllo di quali direttive siano ammesse nei file .htaccess.
- Config file variables: i file di configurazione ammettono ora variabili per la loro definizione.
Nuovi moduli
- mod_proxy_fcgi: FastCGI Protocol backend for mod_proxy.
- mod_proxy_scgi: SCGI Protocol backend for mod_proxy.
- mod_proxy_express: provides dynamically configured mass reverse proxies for mod_proxy.
- mod_remoteip: Replaces the apparent client remote IP address and hostname for the request with the IP address list presented by a proxies or a load balancer via the request headers.
- mod_heartmonitor, mod_lbmethod_heartbeat: allow mod_proxy_balancer to base loadbalancing decisions on the number of active connections on the backend servers.
- mod_proxy_html: formerly a third-party module, this supports fixing of HTML links in a reverse proxy situation, where the backend generates URLs that are not valid for the proxy’s clients.
- mod_sed: an advanced replacement of mod_substitute, allows to edit the response body with the full power of sed.
- mod_auth_form: allows to do form-based authentication.
- mod_session: allows to keep session state for clients, using cookie or database storage.
- mod_allowmethods: new module to restrict certain HTTP methods without interfering with authentication or authorization.
- mod_lua: embeds the Lua language into httpd, for configuration and small business logic functions.
- mod_log_debug: allows to add customizable debug logging at different phases of the request processing.
- mod_buffer: provides for buffering the input and output filter stacks.
- mod_data: convert response body into an RFC2397 data URL.
- mod_ratelimit: provides Bandwidth Rate Limiting for Clients.
- mod_request: provides Filters to handle and make available HTTP request bodies.
- mod_reflector: provides Reflection of a request body as a response via the output filter stack.
- mod_slotmem_shm: provides a Slot-based shared memory provider (ala the scoreboard).
- mod_xml2enc: supports internationalisation in libxml2-based (markup-aware) filter modules.
Come detto, infine, miglioramenti a mod_cache, mod_proxy e anche mod_ssl.