Come abbiamo già ampiamente illustrato nel nostro precedente articolo, un Server Proxy, impostato in modalità Forward Proxy o Reverse Proxy, funge da “intermediario” nella comunicazione tra Client e Server.
Il Forward Proxy è usato tipicamente per proteggere i Client che effettuano richieste a dei Server sulla rete, ad esempio per garantire l’anonimato. Collegarsi alla rete attraverso un Forward Proxy ci garantisce che l’IP della nostra postazione Client non sarà visualizzato dal Server perché quest’ultimo vedrà solo l’IP del Proxy che fa da filtro tra noi e la rete.
Di converso un Reverse Proxy viene utilizzato per proteggere un Server e funge quindi da intermediario tra le richieste che arrivano dai Client e le risorse o i servizi che il Server eroga. Un Reverse Proxy può essere utilizzato come sistema di gestione della cache, come ausilio al firewall per effettuare operazioni di filtraggio dei pacchetti in entrata, e come load balancer.
Vediamo quindi di seguito (in ordine alfabetico) quali sono attualmente i migliori e più utilizzati software che svolgono funzionalità di Server Proxy.
Indice
Apache HTTP Server
Cominciamo questa carrellata con il Re dei Web Server: il mitico Apache. Possiamo affermare senza tema di smentite che Apache ha dato un contributo fondamentale allo sviluppo del Web, e senza il lavoro encomiabile dei tanti volontari che stanno dietro alla Apache Software Foundation, probabilmente oggi Internet non avrebbe avuto lo sviluppo enorme che tutti conosciamo, o comunque sarebbe probabilmente molto diverso.
Il suo sviluppo è iniziato nel lontano 1995 e ancora oggi, nonostante la concorrenza agguerrita, Apache regge sulle proprie spalle una parte molto consistente dell’intero Web.
Nonostante il suo uso principale sia quello di Web Server, è possibile configurarlo anche come Reverse Proxy.
Hai bisogno di un sistemista per il tuo server Linux?
Scopri cosa possiamo fare per te.
Apache Traffic Server
Il software Apache Traffic Server è un server proxy veloce, scalabile e molto performante. Si tratta dell’evoluzione di Inktomi Traffic Server che era un prodotto commerciale inizialmente sviluppato da Yahoo! per i propri server. Successivamente fu donato alla Apache Software Foundation e rilasciato gratuitamente con licenza open source. Oggi costituisce un’ottima soluzione per gestire un Reverse Proxy in condizioni di traffico anche molto elevato.
Perfettamente compatibile con i protocolli HTTP/1.1 e HTTP/2, Apache Traffic Server è sicuramente uno dei migliori software del suo segmento e si è dimostrato in grado di reggere picchi di traffico considerevoli, come ampiamente dimostrato dal suo impiego nei servizi di Yahoo!.
Apache Traffic Server, come di consueto per le soluzioni analoghe, è in grado di servire direttamente e velocemente i file statici (immagini, CSS, JavaScript) e contestualmente instradare le richieste per la generazione di contenuto dinamico ad un Web Server, come ad esempio Apache HTTP Server. Il software viene usato efficacemente anche per gestire il load balancing, effettuare operazioni di filtraggio, anonimizzazione delle richieste e anche gestione della cache su diversi livelli stratificati.
Il software è inoltre estendibile grazie alle sue API pubbliche tramite le quali è possibile creare plug-in personalizzati per modificare gli algoritmi di filtraggio, le intestazioni HTTP o gestire la cache in maniera personalizzata.
HAProxy
HAProxy è la contrazione di High Avalaibility Proxy, e si tratta di un software per il load balancing gratuito e open source. HAProxy ha dimostrato sul campo la propria validità e oggi è una delle soluzioni più usate ed apprezzate. Come il nome stesso suggerisce, utilizzato in modalità load balancing consente ai sistemi di offrire un’alta disponibilità anche in presenza di traffico molto elevato.
HAProxy è in grado di funzionare come Reverse Proxy HTTP, gestire la cache del server ed effettuare il bilanciamento del carico. Il software è sviluppato secondo la logica event-driven, ovvero è basato sugli eventi e combina un sistema di Input/Output molto veloce con uno scheduler multithread efficiente e versatile che gli consente di gestire con facilità anche decine di migliaia di richieste contemporaneamente, tanto è vero che si è rivelato efficace anche contro alcuni attacchi DDoS.
HAProxy funziona quindi egregiamente come Reverse Proxy, passando, bilanciando e filtrando le informazioni di connessione in arrivo dai client ai server di backend che gestisce tramite una serie di regole preimpostate e personalizzabili.
Hai un problema sul tuo server Linux?
Scopri cosa possiamo fare per te.
Nginx
Nginx è un Web Server open source ormai popolarissimo, tanto che ha superato Apache come diffusione. Al momento in cui scriviamo Nginx si colloca al 34,1% contro il 31,8% di Apache come percentuale di utilizzo nel web (per inciso, anche noi di GM Digital usiamo Nginx sui nostri server).
Nginx vanta prestazioni di primissimo ordine (in pratica è il più veloce tra i software della sua categoria) ed è estremamente versatile, tanto da essere usato anche come Reverse Proxy, Cache HTTP e Load Balancer.
Ormai la sua ascesa sembra inarrestabile, considerando che le principali aziende IT del mondo utilizzano questo software per i loro server.
Nginx è stato sviluppato nel 2004 dal programmatore russo Igor Sysoev, che si concentrò sul problema “C10K”, ovvero di come gestire oltre 10.000 connessioni contemporanee su un Web Server.
Nginx garantisce quindi performance eccellenti e un consumo di risorse molto basso, ragion per cui è diventato sempre più utilizzato e diffuso. Nginx utilizza un’architettura asincrona per la gestione delle richieste, basata sugli eventi: anziché creare nuovi processi per ogni richiesta. Con Nginx un solo processo, detto master, può gestire molteplici richieste delegandone l’effettiva elaborazione ai processi detti worker. Essendo la sua architettura asincrona e basata sugli eventi, ogni richiesta può essere eseguita dal worker contemporaneamente senza bloccare le altre.
Nginx è utilizzato con successo anche come Reverse Proxy (spesso funge da Reverse Proxy per Apache) impiego nel quale garantisce elevate prestazioni grazie al suo sistema avanzato di gestione della cache che, utilizzando il modulo ngx_http_proxy_module, consente di passare le richieste a un altro server su protocolli diversi da HTTP, come FastCGI, uwsgi, SCGI e memcached.
Come già accennato Nginx è molto efficiente anche in funzione di Load Balancer nelle situazioni di alto traffico, garantendo quindi anche alte prestazioni e alta disponibilità delle risorse.
Per finire, Nginx è anche relativamente facile da installare e configurare. In linea di massima le sue impostazioni predefinite vanno bene per la maggior parte dei casi, anche se ovviamente per ottenere davvero il massimo, specie in situazioni di alto carico, è necessario uno studio approfondito delle sue possibilità di configurazione.
Pound proxy
Pound è un Reverse Proxy molto leggero e veloce. Completamente open source, esso viene utilizzato quindi sia come Reverse Proxy che come Load Balancer. Pound è anche un SSL Terminator o Wrapper, ovvero decodifica le richieste HTTPS in arrivo dai Client e le invia come richieste semplici HTTP al Server, quindi è utilizzabile proficuamente in tutte quelle situazioni in cui il Server non offra in maniera nativa le funzionalità di Wrapper SSL. Pound Proxy svolge anche la funzione di HTTP/HTTPS Sanitizer, ovvero si occupa di analizzare le richieste HTTP/HTTPS in ingresso e far passare solo quelle ben formate e che non presentano errori. Per finire, Puond Proxy è impiegato anche come Fail Over Server: infatti in caso di guato o interruzione del servizio da parte del Server Back-End, Pound Proxy interromperà il passaggio delle richieste in arrivo fino a quando le funzionalità del Server non vengono ripristinate.
Il software è molto minimale: può essere eseguito come setuid/setgid o in chroot, quindi senza la necessità di accedere all’hard disk del Server.
Da notare che Pound Proxy non è un Web Server, quindi non serve alcun contenuto, ma si limita a passare le richieste al back-end Server che gestisce, e non è un acceleratore web, non avendo capacità di memorizzazione o gestione della cache.
Tuttavia, per il compito di Reverse Proxy puro, costituisce sicuramente una delle soluzioni più leggere e performanti attualmente disponibile.
Squid Proxy Server
Squid è un server proxy open source completamente gratuito in grado di supportare vari protocolli come HTTP, HTTP/2, HTTPS, FTP, ecc. È dotato di un Reverse Proxy che funge da gestore della cache web memorizzando le richieste in entrata per fornire velocemente i dati in uscita. Squid Proxy è dotato di numerose opzioni per l’ottimizzazione del traffico, il controllo degli accessi, l’autorizzazione e l’autenticazione. Il software è utilizzabile anche in funzione di filtraggio dei pacchetti, grazie all’estensione SquidGuard.
Squid, pur non essendo diffuso né tanto meno famoso come i suoi più blasonati concorrenti, è sicuramente un ottimo prodotto, specie per la gestione della cache. È inoltre un software molto flessibile: è infatti possibile ad esempio creare una rete di Proxy Cache utilizzando un cluster di più proxy basati su Squid e quindi distribuendo le richieste tra i vari proxy.
Hai bisogno di assistenza tecnica sul tuo server Linux?
Scopri cosa possiamo fare per te.
Tinyproxy
Tinyproxy è un Server Proxy che lavora come demone proxy HTTP/HTTPS, molto leggero e disponibile per tutti le principali distribuzioni Linux e Unix. Il software è completamente gratuito e open source ed è distribuito sotto licenza GNU GPL. Tinyproxy è progettato per essere un proxy veloce e focalizzato sulla leggerezza, impiegando pochissime risorse sul sistema: queste sue caratteristiche di estrema leggerezza ne fanno quindi una scelta ideale in tutti quei casi d’uso che prevedono implementazioni integrate o piccole reti.
Tinyproxy lavora in maniera molto efficiente utilizzando un sistema di buffer per le risposte ricevute dai Server che verranno poi inoltrate ai Client alla massima velocità possibile. È inoltre dotato di funzioni di filtraggio ed è utilizzabile in modalità anonima, essendo quindi in grado di consentire o impedire l’accesso a determinati Headers HTTP .
Tinyproxy supporta pienamente HTTPS, filtraggio basato sugli URL, il controllo degli accessi tramite sottoreti e indirizzi IP, Proxy trasparenti e un’ampia serie di funzionalità dedicate alla privacy che consentono di limitare e filtrare efficacemente i dati in ingresso e in uscita.
Traefik Proxy
Traefik (o Traffic) è un moderno software che svolge funzioni di Reverse Proxy e load balancing ottimizzato per la distribuzione di microservizi e supporta diversi algoritmi di load balancing. In questo contesto si rivela come una delle migliori soluzioni attualmente disponibili. Scritto in linguaggio Go, Traefik è abbastanza facile da installare e configurare ed è progettato per lavorare efficacemente con i moderni servizi basati sul Cloud. È inoltre perfettamente integrabile con altri software di gestione e orchestrazione di container e microservizi, come ad esempio Docker, Kubernets, Swarm, AWS, RestAPI, Mesos/Marathon, Swarm e Zookeper e molto altro.
Traefik permette anche di eseguire una configurazione automatica del sistema, in modo da poter essere utilizzato con una certa facilità anche da utenti che non sono particolarmente esperti nella configurazione di server di rete o proxy: è infatti possibile impostare una scansione automatica della nostra infrastruttura per trovare le informazioni rilevanti e quindi scoprire e verificare quali sono le configurazioni e i servizi più adatti a soddisfare le nostre richieste. Traefik permette quindi di aggiungere, rimuovere, aggiornare o ridimensionare i servizi che gestisce con grande facilità.
Traefik supporta pienamente i WebSocket, i protocolli HTTP/1 e 2, HTTPS con Let’s Encrypt e mantiene una serie di registri di accesso con i quali è possibile configurare delle metriche di monitoraggio e controllo tramite tools come Datadogs, Rest, Prometheus o InfluxDB.
Traefik viene fornito con una comoda interfaccia web based tramite la quale è possibile gestire con facilità tutti gli aspetti dell’applicazione. È possibile installarlo come pacchetti binario o come immagine Docker, ed utilizzarlo su tutte le principali distribuzioni Linux.
Varnish HTTP Cache
Varnish è uno dei più famosi ed utilizzati Reverse Proxy per la gestione della Cache: offre prestazioni molto elevate. grandi possibilità di configurazione ed inoltre è completamente gratuito ed open source. Come ogni Reverse Proxy Varnish si interpone tra il Browser Web del Client e il Web Server http: ogni volta che un Client richiede al Server delle risorse, Varnish intercetta la richiesta e, se la risorsa è presente nella propria cache, la serve al Cliente molto velocemente, altrimenti la passa al Server per l’elaborazione.
Varnish utilizza un proprio linguaggio per la sua configurazione, chiamato appunto Varnish Configuration Language (VCN) che, a fronte della necessità di studiarlo e padroneggiarne le funzioni, consente una flessibilità e una grande potenza nell’ottimizzazione della configurazione del software. Varnish è inoltre estendibile grazie alla possibilità di aggiungere moduli alla sua struttura di base che è modulare.
Un suo grosso limite è la capacità di servire solo richieste HTTP in chiaro, senza alcun supporto per i protocolli SSL/TLS. Questa limitazione è tuttavia superabile in maniera abbastanza facile utilizzando di fronte ad esso un SSL Terminator con HAProxy o Nginx.