Questo post fa parte della serie Cloud Computing Foundations. Per approfondire le vostre competenze, seguite il nostro corso di certificazione Introduction to Cloud Computing .
Forse conoscete già questo concetto. Ricordate il modello client/server? I server Web sono solo un componente di questo modello: il server.
A livello di base, un server Web memorizza e distribuisce siti e applicazioni Web. I server Web sono composti da hardware e software che lavorano insieme per facilitare lo scambio di dati.
Il componente hardware di un server web si riferisce al computer fisico o virtuale che memorizza i file e i componenti del sito web. Questo include tutto, dai documenti HTML statici, ai file di testo, alle immagini e ai video, fino agli script dinamici più complessi. Ad esempio, se si visita un sito web con un video nella homepage, quel video è memorizzato nell'hardware del server web.
Il componente software di un server web è responsabile del controllo del modo in cui gli utenti possono accedere ai file memorizzati sul server. A tal fine, gestisce le richieste provenienti dai browser web e da altri dispositivi connessi a Internet. Il software installato sul server web consente di visualizzare i siti web nel browser.
Cominciamo con l'analizzare i componenti che fanno funzionare i server web.
Protocollo di trasferimento ipertestuale (HTTP)
L'HTTP consente ai server Web di fornire siti e applicazioni Web agli utenti, in modo che possano accedere e visualizzare i contenuti su Internet.
Quando si utilizza un browser Web per accedere a un sito Web, il browser Web invia una richiesta al server Web che ospita il sito. La richiesta si presenta sotto forma di messaggio HTTP. Il server Web riceve ed elabora la richiesta, recuperando la risorsa richiesta dai suoi componenti hardware e software.
A destra, nell'immagine precedente, possiamo vedere che il server Web invia un messaggio al browser Web utilizzando il protocollo HTTP. Per richiedere un sito web, è sufficiente digitarne l'URL nella barra degli indirizzi del browser. Il browser mappa quindi questo URL in un indirizzo IP, che rappresenta la posizione fisica del server in cui è memorizzato il sito web. Se il server si trova a questo indirizzo IP, il software del server web riceve la richiesta e invia il sito web richiesto. Quindi, se si digita "www.example.com" nel browser, il server Web restituirà il sito Web di "www.example.com".
Self-Hosting vs. Provider di hosting
Quando si tratta di ospitare la propria applicazione web, si può scegliere tra l'utilizzo di un provider di hosting o la creazione di un proprio server sul computer di casa. I privati spesso si auto-ostituiscono, ma per le organizzazioni che forniscono servizi essenziali, un provider di hosting offre una protezione molto maggiore.
Con un provider di hosting, potete usufruire di server e reti ad alta velocità. Un provider di hosting ha anche la capacità di gestire in modo affidabile le fluttuazioni del consumo energetico e di proteggere da potenziali guasti. Ma il motivo principale per cui utilizziamo i provider di hosting per i servizi essenziali è garantire che le informazioni private non diventino di dominio pubblico.
Software per server web
Il software del server web è il cuore di qualsiasi sito o applicazione web. Ci permette di servire contenuti web agli utenti su Internet. Quando creiamo un sito web e configuriamo i nostri server, abbiamo bisogno di un software per farlo funzionare.
In termini di software, due soluzioni dominano il mercato: Apache e NGINX. Le esamineremo in questa sede, ma vale la pena di notare che esistono altre opzioni, tra cui IIS e Lighttpd, ognuna delle quali presenta vantaggi e problemi specifici.
Apache
Apache è un software per server web molto diffuso, ideale per ospitare contenuti dinamici, come siti di commercio elettronico o forum. Può essere eseguito su diverse piattaforme, tra cui Windows, macOS e Linux. Esiste dal 1995 circa ed è uno dei server web più vecchi e più utilizzati.
Apache è in grado di gestire diversi protocolli web, tra cui HTTP, HTTPS e FTP, e può essere eseguito su diversi sistemi operativi, tra cui Windows, Linux e macOS. È altamente personalizzabile, con vari moduli che possono aggiungere funzionalità aggiuntive come il supporto per i contenuti dinamici, l'autenticazione e la cache. È stato costruito appositamente per elaborare i contenuti dinamici all'interno del server stesso, indipendentemente da qualsiasi componente del server.
Apache ha un modello a una connessione per processo. Il modello one-connection-per-process è un approccio tradizionale alla costruzione di server Web in cui ogni connessione del client è gestita da un processo o thread separato. Questo processo, o thread, è responsabile della gestione della connessione del client e dell'elaborazione delle sue richieste fino alla chiusura della connessione. Poiché Apache utilizza questo modello, le prestazioni del server si riducono notevolmente quando il numero di richieste di connessione simultanee supera il numero di processi.
Una delle caratteristiche principali di Apache è la capacità di supportare più host virtuali su un singolo server, consentendo ai siti web di condividere le risorse pur mantenendo le loro configurazioni uniche. Apache è anche altamente estensibile, con una vasta comunità di sviluppatori che crea e mantiene moduli e plugin aggiuntivi per estendere le sue funzionalità.
NGINX
D'altra parte, NGINX (pronunciato Engine X) è ottimizzato per servire contenuti statici come immagini e video ed è popolare per la sua capacità di gestire un gran numero di connessioni client simultanee. NGINX è molto apprezzato per la sua capacità di migliorare la distribuzione dei contenuti sul web.
NGINX è stato costruito utilizzando un modello asincrono e guidato dagli eventi. Ripercorriamo per un attimo questi concetti.
I modelli asincroni vengono utilizzati quando un sistema deve gestire molte richieste simultanee, ad esempio nei server web, nelle comunicazioni di rete e nella gestione dei database. Utilizzando un modello di programmazione asincrono, questi sistemi possono ottenere prestazioni e scalabilità migliori e ridurre il rischio di blocco e congelamento.
Un modello event-driven è guidato dagli eventi del sistema piuttosto che seguire una sequenza predeterminata di passi.
Pertanto, un modello asincrono e guidato dagli eventi consente a un sistema di gestire più attività ed eventi insieme senza bloccare l'elaborazione di altre attività.
A causa della sua architettura, NGINX non può elaborare contenuti dinamici, come il PHP. Deve passarli a un processore esterno per l'esecuzione. Per questo motivo, NGINX è più adatto per contenuti statici, reverse proxy, bilanciamento del carico, proxy di posta e cache HTTP. NGINX è consigliato anche per i sistemi Linux.
Utilizzare insieme NGINX e Apache
NGINX e Apache sono spesso utilizzati insieme. In questo modo, possiamo sfruttare i punti di forza di ciascun server superandone i limiti.
Uno dei metodi più comuni per integrare Apache e NGINX consiste nel mettere NGINX davanti a Apache per gestire tutte le richieste HTTP in entrata, come si vede nell'immagine precedente. Questa configurazione comporta l'indirizzamento di tutte le richieste HTTP in entrata a NGINX, che poi inoltra le richieste di contenuti dinamici a Apache , mentre serve da solo le richieste di contenuti statici.
Collocando NGINX davanti a Apache, si sfrutta la capacità di NGINXdi gestire grandi volumi di richieste di connessione simultanee con il suo modello asincrono e guidato dagli eventi. Ciò contribuisce ad alleviare la pressione su Apache , riducendo il numero di thread e processi aperti necessari per gestire le richieste, che altrimenti potrebbero degradare le prestazioni di Apache.
La configurazione del reverse proxy offre anche ulteriori vantaggi, come il bilanciamento del carico e una maggiore sicurezza. NGINX può distribuire le richieste su più server Apache , bilanciando il carico e impedendo che un singolo server venga sopraffatto. Inoltre, NGINX può fungere da cuscinetto tra Internet e il server Web, fornendo un ulteriore livello di protezione contro gli attacchi.
Acquisite le competenze necessarie per avere successo nel cloud computing seguendo il nostro corso di certificazione Introduction to Cloud Computing .
Commenti (1)
Crystal clear blog, loved the explanation!