Apache HTTP Server

Server HTTP Apache
Il server HTTP Apache (apacii) è un software server Web multipiattaforma gratuito e open source, rilasciato secondo i termini della licenza Apache 2.0. È sviluppato e gestito da una comunità di sviluppatori sotto gli auspici della Apache Software Foundation.

La stragrande maggioranza delle istanze di Apache HTTP Server funziona su una distribuzione Linux, ma le versioni attuali funzionano anche su Microsoft Windows, OpenVMS e un’ampia varietà di sistemi simili a Unix. Le versioni precedenti funzionavano anche su NetWare, OS/2 e altri sistemi operativi, inclusi i port per mainframe.

Indice Argomenti

Originariamente basato sul server HTTPd dell’NCSA, lo sviluppo di Apache iniziò all’inizio del 1995 dopo che il lavoro sul codice NCSA si era bloccato.

Apache ha svolto un ruolo chiave nella crescita iniziale del World Wide Web, superando rapidamente l’NCSA HTTPd come server HTTP dominante. Nel 2009, è diventato il primo software per server web a servire più di 100 milioni di siti web.

A marzo 2022, Netcraft ha stimato che Apache serve il 23,04% del milione di siti web con maggiore traffico, mentre Nginx serve il 22,01%; Cloudflare occupa il terzo posto con il 19,53% e Microsoft Internet Information Services il 5,78% questi i primi quattro posti.

Per alcune delle altre statistiche di Netcraft, Nginx si trova davanti ad Apache.

Secondo l’analisi di tutti i siti Web di W3Techs, nel giugno 2022 Apache si è classificato secondo con il 31,4% e Nginx primo con il 33,6%, con Cloudflare Server terzo al 21,6%.

Come nasce il nome Apache

Secondo la Apache Software Foundation, il suo nome è stato scelto “dal rispetto per le varie nazioni dei nativi americani collettivamente chiamate Apache, ben note per le loro abilità superiori nella strategia di guerra e la loro inesauribile resistenza”. Ciò avvenne in un contesto in cui sembrava che internet aperto – basato sul libero scambio di codice open source – sarebbe stata presto sottoposta a una sorta di conquista da parte del fornitore di software proprietario Microsoft; Il co-creatore di Apache Brian Behlendorf – ideatore del nome – vide il suo impegno in qualche modo parallelo a quello di Geronimo, capo dell’ultimo popolo Apache libero.

Ma ha ammesso che il nome “fa anche un simpatico gioco di parole su ‘un server web irregolare’, un server formato da una serie di patch”.

Ci sono altre fonti per la teoria del gioco di parole “irregolare”, inclusa la documentazione ufficiale del progetto nel 1995, che affermava: “Apache è un nome carino che ci è rimasto appiccicato. Era basato su del codice esistente e su una serie di patch software, un gioco di parole riguardo un server “PAtCHY”.”

Ma in un’intervista dell’aprile 2000, Behlendorf affermò che le origini di Apache non erano un gioco di parole, affermando:

Il nome è letteralmente venuto fuori dal nulla. Vorrei poter dire che è stato qualcosa di fantastico, ma è successo all’improvviso. L’ho messo su una pagina e poi qualche mese dopo, quando è iniziato questo progetto, ho indicato alle persone questa pagina e ho detto: “Ehi, cosa ne pensate di questa’idea?”

… Qualcuno ha detto che gli piaceva il nome e che era davvero un bel gioco di parole. E io ho pensato: “Un gioco di parole? Cosa intendi?” Disse: “Bene, stiamo costruendo un server con un mucchio di patch software, giusto? Quindi è un server Web “patchy”. Ho detto: “Oh, va bene”. …Quando ho pensato al nome, no. E’ un semplice richiamo a un comportamento: “Non fare prigionieri. Sii aggressivo e prendili a calci nel culo.”

Nel gennaio 2023, l’organizzazione no-profit Natives in Tech con sede negli Stati Uniti ha accusato l’Apache Software Foundation di appropriazione culturale e l’ha esortata a cambiare il nome della fondazione, e di conseguenza anche i nomi dei progetti software che ospita.

Quando Apache è in esecuzione sotto Unix, il nome del processo è httpd, che è l’abbreviazione di “HTTP daemon“.

Riassunto delle caratteristiche Apache

Apache supporta una serie di funzionalità, molte implementate come moduli compilati che estendono le funzionalità principali. Questi possono variare da schemi di autenticazione al supporto a linguaggi di programmazione lato server come :

  • Perl,
  • Python,
  • Tcl
  • e PHP.

I moduli di autenticazione più diffusi includono mod_access, mod_auth, mod_digest e mod_auth_digest, il successore di mod_digest. Un esempio di altre funzionalità includono il supporto Secure Sockets Layer e Transport Layer Security (mod_ssl), un modulo proxy (mod_proxy), un modulo di riscrittura URL (mod_rewrite), file di registro personalizzati (mod_log_config) e supporto per i filtri (mod_include e mod_ext_filter).

I metodi di compressione più diffusi su Apache includono il modulo di estensione esterno, mod_gzip, implementato per aiutare a ridurre le dimensioni (peso) delle pagine web servite su HTTP.

ModSecurity è un motore di rilevamento e prevenzione delle intrusioni open source per applicazioni Web. I log di Apache possono essere analizzati tramite un browser Web utilizzando script gratuiti, come:

  • AWStats/
  • W3Perl
  • o Visitors.

L’hosting virtuale consente a un’installazione di Apache di servire molti siti Web diversi. Ad esempio, un computer con un’installazione Apache potrebbe servire contemporaneamente il sito esempio.com, esempio.org, test47.test-server.esempio.edu, etc.

Apache offre messaggi di errore configurabili, database di autenticazione basati su DBMS, negoziazione dei contenuti e supporta diverse interfacce utente grafiche (GUI).

Supporta l’autenticazione tramite password e l’autenticazione del certificato digitale. Poiché il codice sorgente è disponibile gratuitamente, chiunque può adattare il server a esigenze specifiche ed è disponibile un’ampia libreria pubblica di componenti aggiuntivi di Apache.

Di seguito un elenco più dettagliato delle funzionalità:

  • Moduli dinamici caricabili
  • Molteplici modalità di elaborazione delle richieste (MPM), tra cui threaded Prefork, Event-based/Async.
  • Altamente scalabile (gestisce facilmente più di 10.000 connessioni simultanee)
  • Gestione di file statici, file indice, indicizzazione automatica e negoziazione dei contenuti
  • Supporto per la configurazione di .htaccess per directory
  • Proxy inverso con memorizzazione nella cache
  • Bilanciamento del carico[27] con controlli di integrità in banda
  • Meccanismi multipli di bilanciamento del carico
  • Tolleranza ai guasti e failover con ripristino automatico
  • Supporto WebSocket, FastCGI, SCGI, AJP e uWSGI con memorizzazione nella cache
  • Configurazione dinamica
  • TLS/SSL con supporto di pinzatura SNI e OCSP, tramite OpenSSL o wolfSSL.
  • Server virtuali basati su nome e indirizzo IP
  • Compatibile con IPv6
  • Supporto HTTP/2
  • Autenticazione granulare e controllo dell’accesso alle autorizzazioni
  • compressione e decompressione gzip
  • Riscrittura URL
  • Riscrittura delle intestazioni e dei contenuti.
  • Registrazione personalizzata con rotazione
  • Limitazione delle connessioni simultanee
  • Richieste limitazione della velocità di elaborazione
  • Limitazione della larghezza di banda
  • Include Lato server
  • Geolocalizzazione basata su indirizzo IP
  • Monitoraggio degli utenti e delle sessioni
  • WebDAV
  • Embedded Perl, PHP and Lua scripting
  • Supporto CGI
  • public_html pagine web per utente
  • Analizzatore di espressioni generiche
  • Visualizzazioni dello stato in tempo reale
  • Supporto FTP (tramite un modulo separato)

Prestazione

Invece di implementare una singola architettura, Apache fornisce una serie di moduli multiprocessing (MPM), che gli consentono di funzionare in una modalità basata su processi, una modalità ibrida (processo e thread) o una modalità ibrida su eventi, al fine di soddisfare meglio le esigenze di ciascuna particolare infrastruttura.

La scelta dell’MPM e della configurazione è quindi importante. Laddove è necessario scendere a compromessi in termini di prestazioni, Apache è progettato per ridurre la latenza e aumentare la velocità effettiva rispetto alla semplice gestione di più richieste, garantendo così un’elaborazione coerente e affidabile delle richieste entro tempi ragionevoli.

Per la distribuzione di pagine statiche, la serie Apache 2.2 è stata considerata significativamente più lenta di nginx e paint. Per risolvere questo problema, gli sviluppatori Apache hanno creato Event MPM, che combina l’uso di diversi processi e diversi thread per processo in un ciclo asincrono basato su eventi.

Questa architettura implementata nella serie Apache 2.4 performa bene almeno quanto i server web basati su eventi, secondo Jim Jagielski e altre fonti indipendenti.

Tuttavia, alcuni benchmark indipendenti ma notevolmente obsoleti mostrano che è ancora veloce la metà di nginx, ad esempio.

 

Licenza Apache

Il codebase Apache HTTP Server è stato concesso in licenza alla licenza Apache 2.0 (dalla precedente licenza 1.1) nel gennaio 2004, e Apache HTTP Server 1.3.31 e 2.0.49 sono state le prime versioni a utilizzare la nuova licenza.

Il progetto OpenBSD non ha gradito il cambiamento e ha continuato a utilizzare le versioni di Apache precedenti alla 2.0, effettuando di fatto un fork di Apache 1.3.x per i suoi scopi. Inizialmente lo sostituirono con Nginx e subito dopo crearono il loro sostituto, OpenBSD Httpd, basato sul progetto Relayd.

Versioni

Versione 1.1: La licenza Apache 1.1 è stata approvata dall’ASF nel 2000: la modifica principale rispetto alla licenza 1.0 è nella “clausola pubblicitaria” (sezione 3 della licenza 1.0); i prodotti derivati non sono più tenuti a includere l’attribuzione nel loro materiale pubblicitario, ma solo nella loro documentazione.

Versione 2.0: ASF ha adottato la licenza Apache 2.0 nel gennaio 2004. Gli obiettivi dichiarati della licenza includevano rendere la licenza più semplice da utilizzare per progetti non ASF, migliorare la compatibilità con il software basato su GPL, consentire invece di includere la licenza come riferimento di invece che elencata in ogni file, chiarendo la licenza sulle contribuzioni e richiedendo una licenza di brevetto sulle contribuzioni che necessariamente violano i brevetti propri del contributore.

Versioni diApache HTTP Server
VERSIONE RELEASE INIZIALE ULTIMA RELEASE
1.3 1998-06-06 2010-02-03 (1.3.42)
2.0 2002-04-06 2013-07-10 (2.0.65)
2.2 2005-12-01 2017-07-11 (2.2.34)
2.4 2012-02-21 2023-04-06 (2.4.57)

Sicurezza

Apache, come altri software server, può essere violato e sfruttato. Il principale strumento di attacco di Apache è Slowloris, che sfrutta un bug nel software Apache.

Crea molti socket e li mantiene tutti attivi e occupati inviando diversi byte (noti come “intestazioni keep-alive“) per far sapere al server che il computer è ancora connesso e non presenta problemi di rete. Gli sviluppatori Apache hanno rivolto a Slowloris diversi moduli per limitare i danni causati; i moduli Apache mod_limitipconn, mod_qos, mod_evasive, mod security, mod_noloris e mod_antiloris sono stati tutti suggeriti come mezzo per ridurre la probabilità di un attacco Slowloris riuscito. A partire da Apache 2.2.15, Apache fornisce il modulo mod_reqtimeout come soluzione ufficiale supportata dagli sviluppatori.

Apache vs Nginx

Nginx, pronunciato EnginX, è un software gratuito e open source.
Rispetto ad Apache, è un’applicazione server web più recente rilasciata nel 2004.

Nginx è stato creato per risolvere il cosiddetto problema c10k, ovvero un server web che utilizza i thread per gestire le richieste degli utenti non è in grado di gestire più di 10.000 connessioni contemporaneamente.

Poiché Apache utilizza la struttura basata su thread, i proprietari di siti Web ad alto traffico potrebbero riscontrare problemi di prestazioni. Nginx è uno dei server web che affronta il problema c10k e probabilmente quello di maggior successo.
Nginx ha un’architettura basata sugli eventi che non crea un nuovo processo per ogni richiesta. Invece, gestisce ogni richiesta in arrivo in un singolo thread. Questo processo principale gestisce diversi processi di lavoro che eseguono l’effettiva elaborazione delle richieste.

Il modello basato sugli eventi di Nginx distribuisce le richieste degli utenti, tra i processi di lavoro, in modo efficiente, portando quindi a una scalabilità molto migliore.
Se devi gestire un sito web ad alto traffico, Nginx è una scelta eccellente, poiché può farlo utilizzando risorse minime. Non può essere una coincidenza che sia utilizzato da molti siti Web ad alta visibilità come Netflix, Hulu, Pinterest e Airbnb.
Tuttavia, per gli operatori di piccole e medie dimensioni, Apache offre una grande scala di vantaggi rispetto a Nginx, come la sua facile configurazione, molti moduli e un ambiente facile da gestire.

Apache Vs Tomcat

Tomcat è un popolare server web sviluppato anch’esso dalla Apache Software Foundation, quindi il suo nome ufficiale è Apache Tomcat. Simile ad Apache, Tomcat è un server HTTP. Tuttavia, la sua funzionalità principale è quella di alimentare applicazioni Java anziché siti Web statici. Tomcat può eseguire diverse specifiche Java come:

  • Java Servlet,
  • JavaServer Pages (JSP),
  • Java EL
  • e WebSocket.

Tomcat è stato creato appositamente per servire contenuti Web dinamici eseguiti su app Java, mentre Apache è un server HTTP per scopi generici. Puoi utilizzare Apache insieme a diversi linguaggi di programmazione (PHP, Python, Perl, ecc.) con l’aiuto degli appositi moduli Apache (mod_php, mod_python, mod_perl, ecc.).
Sebbene sia possibile utilizzare un server Tomcat anche per servire pagine Web statiche, è meno efficiente per questo scopo rispetto al server Apache. Ad esempio, Tomcat precarica Java Virtual Machine e altre librerie relative a Java di cui non avrai bisogno sulla maggior parte dei siti web.
Tomcat è anche meno configurabile rispetto ad altri server web. Ad esempio, per eseguire WordPress, la scelta migliore è un server HTTP generico come Apache o NGINX.

Pro e contro di Apache

Un server web Apache può essere un’ottima scelta per gestire il tuo sito web su una piattaforma stabile e versatile. Tuttavia, presenta anche alcuni svantaggi a cui è necessario prestare attenzione.

Pro:

  • Open source e gratuito, anche per uso commerciale.
  • Software affidabile e stabile.
  • Patch di sicurezza aggiornate frequentemente.
  • Flessibile grazie alla sua struttura basata su moduli.
  • Facile da configurare, adatto ai principianti.
  • Multipiattaforma (funziona sia su server Unix che Windows).
  • Consegnabilità ottimale per file statici e compatibilità con qualsiasi
  • Linguaggio di programmazione (PHP, Python, ecc.)
  • Funziona immediatamente con i siti WordPress.
  • Comunità enorme e supporto facilmente disponibile in caso di qualsiasi problema.

Contro:

  • Problemi di prestazioni su siti Web estremamente pesanti.
  • Troppe opzioni di configurazione possono portare a vulnerabilità della sicurezza.

Allora, cos’è Apache?

Apache è uno dei server web più popolari al mondo, Apache ti consente di gestire un sito web sicuro senza troppi grattacapi. È gratuito e open source, il che lo rende una scelta molto frequente per professionisti e piccole imprese che desiderano essere presenti sul web.

Il modo in cui funziona il server HTTP Apache è che accetterà le richieste da browser web, come Google Chrome e Microsoft Edge, e trasformerà gli script di programmazione in pagine web i cui contenuti sono visibili ai visitatori.

Puoi installare un sito Web WordPress su un server Web Apache senza alcuna personalizzazione.

Inoltre, il server Apache funziona perfettamente con molti altri sistemi di gestione dei contenuti (Joomla, Drupal, ecc.), framework web (Django, Laravel, ecc.) e linguaggi di programmazione. Ciò lo rende una scelta solida per tutti i tipi di piattaforme di web hosting, come VPS o hosting condiviso.

Speriamo che questo articolo fornisca tutte le risposte che devi sapere su cos’è Apache. Lascia qualsiasi commento qui sotto se hai ancora domande su questo server web!