# Server web

In informatica un server web è un software e l'hardware sottostante che, in esecuzione su un server, è in grado di gestire le richieste di trasferimento di pagine web dal client che ne fa richiesta, tipicamente un web browser o un web crawler. La comunicazione tra server e client avviene tramite il protocollo HTTP, che utilizza la porta TCP 80 (o 8080), o eventualmente la versione sicura HTTPS, che utilizza invece la 443. Su un server web risiedono dunque i siti web tramite hosting. Un server Web può anche accettare e archiviare risorse inviate dall'agente utente, se configurato per farlo. L'insieme di tutti i server web interconnessi a livello mondiale dà vita al World Wide Web.

## Descrizione

Teoricamente un qualsiasi dispositivo per cui sia disponibile qualche software che agisca come server web può diventare un server web, ma solitamente i dispositivi che ospitano server web sono sistemi hardware dedicati e ottimizzati a tale scopo. Ad esempio si può installare un server web su un normale PC allo scopo di testare in locale un insieme di pagine web oppure per consentire l'accesso ai propri documenti da altri client host, sia in rete locale, sia via Internet.
Il software del server Web è accessibile tramite i nomi di dominio dei siti Web e garantisce la consegna del contenuto del sito all'utente richiedente. Anche il lato software è composto da diversi componenti, con almeno un server HTTP. Il server HTTP è in grado di comprendere HTTP e URL. Come hardware, un server Web è un computer che memorizza il software del server Web e altri file relativi a un sito Web, come documenti HTML, immagini e file JavaScript.
Quando un browser web, come Google Chrome o Firefox, necessita di un file ospitato su un server web, il browser richiederà il file tramite HTTP. Quando la richiesta viene ricevuta dal server web, il server HTTP accetterà la richiesta, troverà il contenuto e lo re-invierà al browser tramite HTTP.
Nello specifico, quando un browser richiede una pagina da un server web, il processo seguirà una serie di passaggi. Innanzitutto, un utente specificherà un URL nella barra degli indirizzi di un browser web. Il browser web otterrà quindi l'indirizzo IP del nome di dominio, traducendo l'URL tramite DNS (Domain Name System) o effettuando una ricerca nella sua cache. Questo porterà il browser su un server web. Il browser richiederà quindi il file specifico dal server Web tramite una richiesta HTTP. Il server web risponderà, inviando al browser la pagina richiesta, sempre tramite HTTP. Se la pagina richiesta non esiste o se qualcosa va storto, il server web risponderà con un messaggio di errore. Il browser sarà quindi in grado di visualizzare la pagina web.
È inoltre possibile ospitare più domini su un server Web.

### Esempi di usi del server web

I server web spesso fanno parte di un pacchetto più ampio di programmi relativi a Internet e intranet utilizzati per:
* inviare e ricevere email;
* download di richieste di file FTP (File Transfer Protocol);Esempio di FTP
* creazione e pubblicazione di pagine web.
Molti server Web di base supportano anche lo scripting lato server, utilizzato per utilizzare script su un server Web in grado di personalizzare la risposta al client. Lo scripting lato server viene eseguito sulla macchina server e in genere ha un ampio set di funzionalità, che include l'accesso al database. Il processo di scripting lato server utilizzerà anche ASP, PHP e altri linguaggi di scripting. Questo processo consente anche la creazione dinamica di documenti HTML.

### Server web dinamici e statici

Un server web può essere utilizzato per servire contenuti statici o dinamici. Statico si riferisce al contenuto mostrato così com'è, mentre il contenuto dinamico può essere aggiornato e modificato. Un server web statico sarà composto da un computer e da un software HTTP. È considerato statico perché il server invierà i file ospitati così come sono a un browser.
I browser Web dinamici saranno costituiti da un server web e da altro software come un server di applicazioni e un database. È considerato dinamico perché il server delle applicazioni può essere utilizzato per aggiornare i file ospitati prima che vengano inviati a un browser. Il server web può generare contenuto quando richiesto dal database. Sebbene questo processo sia più flessibile, è anche più complicato.
Ad esempio, per produrre le pagine Web finali visualizzate nel browser, il server web potrebbe riempire un modello HTML con il contenuto di un database. Siti come Wikipedia hanno migliaia di pagine web. In genere, questi tipi di siti sono composti solo da pochi modelli HTML e un database compatibile, piuttosto che da migliaia di documenti HTML statici. Questa configurazione semplifica la manutenzione e la distribuzione dei contenuti.

### Pratiche di sicurezza relative al server web

Esistono molte pratiche di sicurezza relative all'uso del server web che le persone possono impostare per rendere la loro esperienza più sicura. Alcuni esempi possono comprendere i seguenti processi:
* un proxy inverso, progettato per nascondere un server interno e fungere da intermediario per il traffico proveniente da un server interno;
* restrizione dell'accesso attraverso processi come la limitazione dell'accesso dell'host web alle macchine dell'infrastruttura
* utilizzo di Secure Socket Shell (SSH);
* mantenere i server web aggiornati per garantire che essi non siano vulnerabili;
* monitorare la rete per assicurarsi che non ci siano attività non autorizzate;
* utilizzo di un firewall poiché può monitorare il traffico HTTP;
* disporre di un Secure Socket Layer può aiutare a proteggere i dati.
Un server web deve archiviare i file del sito web, ovvero tutti i documenti HTML e le relative risorse, inclusi immagini, fogli di stile CSS, file JavaScript, font e video.
Tecnicamente si potrebbero ospitare tutti quei file sul proprio computer, ma è generalmente più conveniente archiviare tutti i file su un server web perché:
* Un server web è in genere sempre disponibile.
* Esclusi tempi di crash e altri problemi di sistema, un server web dedicato è sempre connesso a Internet.
* Un server web può avere sempre lo stesso indirizzo IP. Questo è noto come indirizzo IP dedicato, anche se non tutti gli ISP forniscono un indirizzo IP fisso per le linee domestiche.
* Un server web è in genere gestito da una terza parte.

### Scalabilità

La scalabilità è verticale e orizzontale. Per scalabilità verticale si intende la creazione di un sistema con molti processori e per orizzontale si intende la combinazione di sistemi informatici in un'unica risorsa di elaborazione virtuale.

### Elenco dei server web (software) più diffusi

* Apache HTTP Server (sviluppato dalla Apache Software Foundation)
* Apache Tomcat (sviluppato dalla Apache Software Foundation)
* Caddy
* Cassini Server Web
* ColdFusion (di Macromedia, ora acquisita da Adobe)
* HTTP File Server
* Internet Information Services (IIS, sviluppato da Microsoft)
* KLone (sviluppato da KoanLogic srl)
* lighttpd
* Mongoose (sviluppato da Cesanta Software)
* NCSA HTTPd
* nginx
* PowerFolder (necessita di JRE)
* Sun ONE (di Sun Microsystems)
* Zeus Web Server (sviluppato da Zeus Technology)

## Galleria d'immagini

* Concept di Firewall e server web
* Concept di server web
* Interno di un server web