Un proxy inverso si trova di fronte a un server web e riceve tutte le richieste prima che raggiungano il server di origine. Funziona in modo simile a un forward proxy, ma in questo caso è il server web che usa il proxy piuttosto che l’utente o il client. I reverse proxy sono tipicamente usati per migliorare le prestazioni, la sicurezza e l’affidabilità del server web.

Ad esempio, è possibile avere un sito non WordPress ospitato sul dominio example.com sul Server A e avere il blog in esecuzione su WordPress all’URL example.com/blog ospitato sul Server B. È possibile ottenere questo risultato aggiungendo un proxy inverso per il server che ospita il vostro sito principale. Potete configurare il proxy inverso per reindirizzare le richieste al blog su un server diverso (ad esempio un host WordPress gestito come Kinsta).

In questo articolo, imparerete le basi dei server reverse proxy, come funzionano, quali sono i loro principali vantaggi e come potete usarli per velocizzare e rendere sicuro il vostro sito WordPress.

Entusiasti? Cominciamo!

Che Cos’È un Reverse Proxy?

Per capire cos’è un server reverse proxy, è necessario prima conoscerne il ruolo e familiarizzare con tutti i termini ad esso correlati.

Quando navigate normalmente sul web inserendo un nome di dominio o facendo clic su un link, il vostro browser/dispositivo si collega direttamente al server del sito web e inizia a scaricare le sue risorse.

Come funziona di solito la navigazione in internet
Come funziona di solito la navigazione in internet

Se volete rendere anonimo il vostro indirizzo IP dai siti web che visitate, potete prima inviare tutte le vostre richieste a un server proxy. Questo inoltrerà le vostre richieste al DNS resolver e poi scaricherà le risorse del sito web dal suo server di origine.

In seguito, trasmetterà queste risorse al vostro dispositivo. Questo si chiama forward proxy.

Come funziona un server forward proxy
Come funziona un server forward proxy

In questo modo siete completamente nascosti al sito web in quanto questo riterrà che la vostra richiesta provenga dal forward proxy.

Oltre a migliorare la privacy degli utenti, un proxy forward viene utilizzato principalmente per aggirare le restrizioni geografiche sui contenuti. Ad esempio, se volete guardare un video bloccato nella vostra regione, potete usare un forward proxy con un indirizzo IP sul quale il video è disponibile per la visualizzazione.

Un proxy forward funziona quasi allo stesso modo di una Virtual Private Network (VPN), ma sono tecnologie distinte con casi d’uso unici (a volte possono però sovrapporsi).

Server Reverse Proxy vs Server Forward Proxy

Un server proxy inverso funge da fronte per il server di origine, mantiene l’anonimato e migliora la sicurezza, proprio come un utente/cliente può utilizzare un forward proxy per ottenere lo stesso risultato. Esso assicura che nessun utente o cliente comunichi direttamente con il server di origine.

Come funziona un server reverse proxy
Come funziona un server reverse proxy

La differenza tra un forward proxy e un reverse proxy è minima, ma i due funzionano in modo diverso.

Entrambi possono lavorare insieme perché non c’è sovrapposizione tra il loro funzionamento. In genere, gli utenti/clienti utilizzano un forward proxy, mentre i server di origine utilizzano un reverse proxy.

Forward proxy vs reverse proxy
Forward proxy vs reverse proxy

Poiché un amministratore di server può controllare il funzionamento del reverse proxy, è possibile utilizzarlo per abilitare molte funzioni utili.

Ne elencheremo tutti i vantaggi più avanti in questo post.

Perché Usare un Reverse Proxy?

Molte aziende, soprattutto le grandi imprese, hanno siti web fatti su misura per le loro esigenze specifiche e non girano su WordPress. Alcuni esempi sono i siti web di banche e assicurazioni.

In altri casi, un’azienda può ospitare il proprio sito su un servizio esterno che non consente di installare alcun software esterno (ad esempio WordPress). Di solito, si tratta di rivenditori di piccole e medie dimensioni che usano una piattaforma di ecommerce come Shopify.

Dal momento che WordPress ha solide funzionalità CMS, molte aziende, comprese le grandi imprese con siti web su misura, potrebbero preferire di ospitare i loro blog su WordPress.

Un modo per ovviare a questo problema è installare WordPress nel sottodominio del sito principale e strutturare i menu di navigazione in modo che gli utenti possano passare facilmente dal sito principale al blog.

Poiché i sottodomini si comportano come un dominio unico, possono influenzare la SEO del vostro sito. Anche se Google tratta sia i sottodomini che le sottodirectory allo stesso modo, ci vuole più impegno per ottimizzare un sito web per il posizionamento nei motori di ricerca, sia se è ospitato su un sottodominio sia se è ospitato in una sottodirectory.

Due approcci per ospitare i blog su un sito web
Due approcci per ospitare i blog su un sito web

Google ha ribadito che tratta sia i sottodomini che le sottodirectory allo stesso modo, ma alcuni esperti di SEO non sono d’accordo. E anche se non influisce sulla SEO del sito, un sito ospitato in una sottodirectory è semplicemente più facile da mantenere.

Ecco perché è possibile utilizzare un proxy inverso per reindirizzare le richieste al blog del sito ospitato su un server separato. Ad esempio, una banca può ospitare il proprio sito web principale sui propri server in modo sicuro, ma può anche ospitare il proprio blog alimentato da WordPress separatamente su un host WordPress gestito, come fa Kinsta.

Un esempio di caso d'uso di reverse proxy
Un esempio di caso d’uso di reverse proxy

L’unificazione di due siti diversi sotto un unico nome di dominio è uno dei vantaggi principali dell’utilizzo di un reverse proxy. Aiuta i brand a mantenere i loro siti organizzati, professionali e credibili.

Vantaggi dell’Utilizzo di un Reverse Proxy

Oltre al caso d’uso di cui sopra, i reverse proxy garantiscono anche molti altri vantaggi. Nella sezione seguente illustriamo alcuni dei loro principali vantaggi.

Load Balancing

Un singolo server di origine non può gestire tutto il traffico in entrata di un sito web con milioni di visitatori unici giornalieri. In questi casi, è possibile distribuire il traffico in modo intelligente tra un pool di molti server. Di solito, tutti i server ospiteranno lo stesso contenuto per eliminare un singolo punto di rottura, rendendo il sito web più affidabile.

Un proxy inverso è un ottimo modo per impostarlo, in quanto può ricevere il traffico in entrata prima che raggiunga il server di origine. Se il server di origine è sovraccarico o si guasta completamente, può distribuire il traffico ad altri server senza compromettere la funzionalità del sito.

I reverse proxy possono anche indirizzare le richieste in arrivo a più server, dove ogni server svolge la funzione specifica per la quale è ottimizzato. Il proxy inverso può quindi raccogliere le risposte da tutti i server e consegnarle al client.

Poiché la maggior parte dei popolari reverse proxy si usano principalmente per il load balancing, sono anche chiamati Load Balancer.

Global Server Load Balancing – GSLB

Il GSLB è un metodo avanzato di load balancing per distribuire il traffico del sito web tra molti server posizionati strategicamente in tutto il mondo. Viene tipicamente effettuato tramite la tecnica di routing anycast, dove il proxy inverso sceglie il nodo del server in base al tempo di percorrenza più veloce tra il client e il server.

Il GSLB non solo aumenta notevolmente l’affidabilità e la sicurezza del sito, ma riduce anche i tempi di latenza e di carico, migliorando così l’esperienza dell’utente. È possibile utilizzare GSLB con altre tecniche di ottimizzazione della rete come Spoon Feeding per liberare ancora di più le risorse computazionali dei server di origine.

Anche se è possibile impostare il Global Server Load Balancing manualmente sul proprio server, di solito è curato da CDN dedicati come Cloudflare e KeyCDN (che alimenta anche Kinsta CDN). Kinsta serve tutti i siti web ospitati con esso attraverso un Load Balancer alimentato da Google Cloud Platform.

Maggiore Sicurezza

I reverse proxy possono mascherare l’indirizzo IP e altre caratteristiche dei server di origine. In questo modo, il server di origine del vostro sito web può mantenere meglio l’anonimato, aumentando notevolmente la sicurezza.

Poiché il proxy inverso riceverà tutto il traffico prima di raggiungere il server principale, eventuali aggressori o hacker troveranno più difficile colpire il vostro sito web con minacce alla sicurezza come gli attacchi DDoS.

È possibile utilizzare un firewall rigoroso per mettere in maggiore sicurezza il proxy inverso contro i comuni attacchi informatici. Senza un proxy inverso, è difficile rimuovere il malware o avviare il takedown.

Un proxy inverso come HAProxy può aggiungere l’autenticazione di accesso HTTP di base a un server web che non l’ha abilitato. È anche possibile utilizzare un proxy inverso per aggiungere l’autenticazione centralizzata per vari tipi di richieste.

Caching Potente

È possibile utilizzare un proxy inverso per l’accelerazione del web mediante il caching di contenuti sia statici che dinamici. Questo può ridurre il carico sul server di origine, con il risultato di un sito web più veloce.

Ad esempio, se il vostro server di origine si trova negli USA e un utente europeo visita il vostro sito web, allora potete servire una versione cache del vostro sito da un server reverse proxy in Europa. Poiché il proxy inverso è più vicino all’utente rispetto al server d’origine, il sito web richiederà meno tempo per essere caricato, rendendo le sue prestazioni eccellenti.

Varnish e Nginx FastCGI sono esempi prominenti di proxy inverso che vengono usati per il caching di contenuti web.

Se il vostro sito è ospitato da Kinsta, non dovete preoccuparvi della cache, perché Kinsta si occupa di tutto il lavoro di caching (offrendo anche funzioni avanzate come Edge Caching).

Compressione Superiore

Le risposte del server consumano molta larghezza di banda. Comprimere le risposte del server (ad esempio con gzip) prima di inviarle al client può ridurre la quantità di larghezza di banda necessaria, velocizzando le risposte del server in rete.

Un proxy inverso è l’ideale per comprimere le risposte dei server in quanto si trova tra i server di origine e il client.

Crittografia SSL Ottimizzata

La crittografia e la decrittografia delle richieste SSL/TLS per ogni client può essere molto onerosa per il server di origine. Un proxy inverso può assumere questo compito per liberare le risorse del server di origine per altri importanti compiti, come servire contenuti.

Un altro vantaggio dell’offloading della crittografia e la decrittografia SSL/TSL è quello di ridurre la latenza per i client che sono geograficamente distanti dal server di origine.

È inoltre possibile optare per un proxy inverso con hardware di accelerazione SSL/TLS specializzato per ottimizzare ulteriormente questo compito. Tale reverse proxy è chiamato proxy di terminazione SSL/TLS. Alcuni server come Varnish non supportano i protocolli SSL/TSL, quindi un proxy inverso di terminazione SSL/TSL può aiutare a proteggere il traffico che li attraversa.

Migliori Test A/B

La maggior parte degli strumenti di test A/B richiede l’uso di librerie JavaScript esterne per caricare le loro funzioni. Tuttavia, il caricamento di script di terze parti può rallentare i tempi di caricamento delle pagine e creare un’esperienza frammentaria per gli utenti.

Invece, è possibile utilizzare un proxy inverso per creare due flussi separati a livello del server stesso. Ad esempio, è possibile utilizzare i metodi split_clients di Nginx o i metodi di sticky route per controllare il reindirizzamento del traffico.

Potete fare riferimento ai tutorial su Nginx e freeCodeCamp per saperne di più sull’esecuzione di test A/B con un reverse proxy.

Monitoraggio e Registrazione del Traffico

Un reverse proxy cattura tutte le richieste che lo attraversano. Quindi, è possibile utilizzarli come hub centrale per monitorare e registrare il traffico. Anche se si usano più server web per ospitare tutti i componenti del vostro sito web, l’utilizzo di un proxy inverso renderà più facile monitorare tutti i dati in entrata e in uscita dal vostro sito.

Secondo la W3Techs, quasi l’83% dei siti web non usa nessun servizio di reverse proxy.

Statistiche dei reverse proxy utilizzati dai siti web
Statistiche dei reverse proxy utilizzati dai siti web (Fonte: W3Techs.com)

Per quanto riguarda il 17% dei siti web che utilizzano un proxy inverso (elencati sopra), noterete che la maggior parte di essi usa un CDN. Questo perché la maggior parte dei reverse proxy nascondono la loro esistenza per default come precauzione di sicurezza. Pertanto, non è possibile affidarsi a servizi di monitoraggio di siti web come W3Techs per trovare i reverse proxy più popolari.

Dalla nostra ricerca e dalla nostra esperienza, i più popolari reverse proxy in uso oggi sono:

Nginx

Nginx è un server web open source che può anche servire come reverse proxy. Oltre a essere utilizzato per ospitare siti web, è anche una delle soluzioni di reverse proxy e load balancing più utilizzate. Secondo Netcraft, nel dicembre 2019 oltre 479 milioni di web server utilizzavano Nginx, il che lo rende leader nella quota di mercato dei web server.

Quota di mercato dei server web di tutti i siti
Quota di mercato dei server web di tutti i siti (Fonte: Netcraft)

Nginx fornisce tutti i vantaggi dei reverse proxy discussi sopra, più altri. Migliora le prestazioni del web, la sicurezza, l’affidabilità e la scalabilità. È possibile configurare Nginx utilizzando il suo file di configurazione, che è anche ricaricabile a caldo. Su Kinsta, il reverse proxy Nginx è uno dei diversi add-on premium che potete usare.

Ma è anche possibile utilizzare Nginx Plus, un’offerta commerciale, per accedere alle opzioni di configurazione basate su API e ad altre funzionalità adatte ai siti web delle grandi imprese.

Kinsta alimenta tutti i suoi siti web con Nginx. È stata elencata fra i migliori web hosting ottenendo la classificazione Top Tier di Review Signal in ogni categoria in cui ha gareggiato. Alcune altre grandi aziende che usano Nginx sono MaxCDN, Cloudflare e Netflix.

L’impostazione di Nginx come reverse proxy di base è semplice. Nginx fornisce anche varie direttive per personalizzare il reverse proxy del vostro server secondo le vostre esigenze. Discuteremo come farlo in una sezione successiva. Se siete clienti Kinsta, nella stessa sezione imparerete anche come usare un proxy inverso per i siti web ospitati con Kinsta.

Varnish

Varnish è un proxy inverso HTTP open source con un motore di cache integrato. È progettato principalmente per siti web ad alto traffico che servono contenuti dinamici. È anche possibile utilizzare Varnish come load balancer, un firewall per applicazioni web (WAF) e un server di autenticazione e autorizzazione edge.

Funziona su tutte le versioni moderne di Linux e FreeBSD, essendo usato principalmente come copertura per i web server Nginx o Apache. Il potente e altamente flessibile Varnish Varnish Configuration Language (VCL) permette di definire varie caratteristiche come la gestione delle richieste HTTP, la cache e la connessione a uno o più server web.

Per questo motivo, molti CDN utilizzano Varnish come base principale per la consegna rapida dei contenuti.

Varnish supporta anche Edge Side Includes (ESI), un linguaggio che aiuta a riutilizzare sezioni di una pagina web in altre pagine web. Se il vostro sito web usa molti contenuti ripetuti in pagine diverse, ESI può aiutarvi a velocizzare i tempi di caricamento delle pagine del vostro sito tramite il caching delle sezioni utilizzate di frequente.

È possibile estendere Varnish con i suoi vari moduli (VMOD). Date un’occhiata al tutorial ufficiale di Varnish per imparare a impostare Varnish come reverse proxy per WordPress.

Apache Traffic Server

Apache Traffic Server è un server proxy di caching open source. È popolare per le sue caratteristiche veloci e scalabili. Era un prodotto commerciale sviluppato da Yahoo! molto tempo fa, ma lo hanno reso open source e lo hanno donato alla Apache Foundation per la manutenzione.

Diverse importanti reti di contenuti e CDN come Comcast, Akamai, LinkedIn, Yahoo e Apple usano Apache Traffic Server per alimentare la loro tecnologia.

Potete anche usare Apache HTTP Server (Apache httpd), un server daemon HTTP, per impostare un proxy inverso sul vostro server web. Oltre ad agire come server web di base, aiuta anche a servire contenuti statici e dinamici agli utenti. Imparerete come impostare Apache come reverse proxy più avanti in questo articolo.

HAProxy

HAProxy è un proxy inverso open source e load balancer. È progettato per integrarsi con la maggior parte delle architetture di server web esistenti, comprese le distribuzioni Linux e le piattaforme cloud. Simile a Nginx, HAProxy usa un modello di I/O event-driven e supporta la suddivisione delle richieste tra più processi di lavoro.

Per le richieste HTTP, HAProxy si comporta molto bene anche con carichi pesanti. Alcuni dei siti web a più alto traffico su internet come Airbnb, Reddit, Instagram, Stack Overflow, Tumblr, GitHub e Imgur usano HAProxy per servire i loro siti web in modo efficiente.

Discutere su come implementare HAProxy va oltre lo scopo di questo articolo, ma si può fare riferimento alla loro documentazione per capire come funziona.

Nota: Traefik ed Envoy sono altre due alternative open source ad HAProxy. Sono entrambi reverse proxy ad alte prestazioni e load balancer con molte caratteristiche avanzate.

Altri popolari reverse proxy sono AWS Elastic Load Balancer, GLBC, DigitalOcean Load Balancer e Google Cloud Load Balancer. Per un elenco esaustivo dei principali reverse proxy e load balancer in uso oggi, potete consultare Stackshare.io.

Reverse Proxy: Casi d’Uso per i Siti WordPress

Ci sono principalmente tre casi d’uso per l’impiego di un proxy inverso per i siti WordPress, compresi i siti ospitati su Kinsta.

Caricamento di un 'Sito principale' o di un 'Sito dietro Proxy.
Caricamento di un ‘Sito principale’ o di un ‘Sito dietro Proxy.

Useremo Nginx solo per questo esempio, poiché è il reverse proxy più popolare usato oggi per i siti WordPress. Ma gli stessi principi di base si applicheranno ad altri reverse proxy.

I proxy inversi sono spesso difficili da installare, configurare e supportare. Per questo motivo, Kinsta offre un abbonamento mensile di 50 dollar per ogni reverse proxy che necessita di aiuto per la configurazione. Potete contattare il team di supporto di Kinsta per ulteriori dettagli.

1. Siti Principali e Siti Proxy Ospitati sullo Stesso Server

Se sia il sito principale che il sito proxy sono ospitati sullo stesso server, il sito principale può funzionare su un’installazione WordPress, mentre un’installazione WordPress separata alimenta il sito proxy.

Poiché avrete accesso a entrambi i siti e al loro server web condiviso, potete impostare le regole del reverse proxy per il sito principale, e quindi configurare il sito proxy per il caricamento dal reverse proxy.

Se ospitate entrambi questi siti su Kinsta, potete contattare il team di supporto di Kinsta e chiedere loro di impostare il reverse proxy per voi. Ecco la procedura da seguire:

  • Assicuratevi che sia il sito principale che il sito proxy siano ospitati su Kinsta. Se non lo sono, allora potete migrare entrambi i siti nell’ambiente di Kinsta, sia manualmente che inviando una richiesta di migrazione.
  • Aprite un ticket di supporto e fornite al team di supporto di Kinsta una chiara descrizione della configurazione del dominio. Ci vorrà circa un giorno lavorativo per impostare il reverse proxy.
  • Kinsta imposterà le relative regole del reverse proxy sul sito principale e configurerà il sito proxy per il caricamento del reverse proxy.

Ecco le direttive standard Nginx reverse proxy usate da Kinsta per caricare un sito di sottodirectory su un reverse proxy:

location ^~ /subfolder/ {
proxy_pass http://subfolder.domain.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}

Nel codice di cui sopra, è necessario sostituire la /subfolder/ segnaposto con il nome effettivo della sottocartella (ad es. /blog/ o /shop/). Inoltre, il sottodominio http://subfolder.domain.com dovrebbe corrispondere all’URL usato per puntare il reverse proxy verso il sito proxy.

La direttiva location include i simboli caret e tilde (^~~) per dire a Nginx che, se trova la stringa definita, dovrebbe smettere di cercare altre corrispondenze e usare le direttive qui elencate. Per saperne di più sulle direttive del reverse proxy di Nginx, consultate la sua documentazione.
Successivamente, è necessario configurare il sito proxy per il caricamento del reverse proxy. Ecco i passi standard seguiti da Kinsta per configurare il sito proxy:

  • Create una sottodirectory nel percorso da cui viene caricato il sito proxy. Tutti i file del sito web proxy vengono spostati in questa sottodirectory.
  • Aggiornate i file di configurazione del server web per definire la nuova sottodirectory come directory principale del sito proxy. Inoltre, è necessario aggiungere una regola di riscrittura per rimuovere la sottodirectory dall’URI di richiesta per ogni richiesta in arrivo.
  • Aggiornate tutti gli URL nel database del sito proxy per farli corrispondere agli URL del sito live (ad es. example.com/blog).
  • Modificate il file wp-config.php del sito proxy con la definizione $_SERVER['HTTP_HOST'], puntando all’URL del sito principale.
  • Se usate un certificato SSL, è necessario definire regole severe nel file wp-config.php per evitare cicli di reindirizzamento.

Nota: un sito proxy non può creare URL che duplicano la stessa sottodirectory sotto la quale il sito proxy viene caricato. Ad esempio, un sito proxy su example.com/blog non può creare una pagina o una directory su example.com/blog/blog.

2. Solo il Sito Proxy È Ospitato sul Vostro Server

Se avete accesso solo al sito proxy e al suo server web, allora dovete contattare l’amministratore del server del sito principale e chiedere di impostare le regole del reverse proxy per voi.

Per fare ciò, è necessario seguire gli stessi passi sopra descritti, tranne che in questo caso dovrete configurare le regole su due server diversi.

Per ospitare il vostro sito proxy con Kinsta, aggiungete un dominio al sito che punterà al reverse proxy. Di solito, il sottodominio si adatta a questo scopo (ad esempio blog.example.com) per caricare il sito proxy su un link di sottodirectory (ad esempio example.com/blog).

Dopo aver impostato il vostro sito proxy su Kinsta, potete contattare il team di supporto Kinsta per configurare il sito proxato in modo che carichi su un reverse proxy. A questo punto, il nostro team di supporto richiederà il vero IP del vostro server per completare il processo di configurazione e così contare correttamente le visite. Se non siete in grado di fornire un IP statico a causa di restrizioni IP dinamiche da parte di alcuni provider (ad esempio AWS CloudFront), il vostro piano sarà convertito in un piano basato sulla larghezza di banda comparabile.

Infine, l’impostazione del reverse proxy sul vostro server non rientra nell’ambito del supporto di Kinsta perché solo chi amministra il server può occuparsi di questo aspetto.

 

3. Solo il Sito Principale È Ospitato sul Vostro Server

Se avete accesso solo al sito principale e al suo server web, allora dovreste impostare il reverse proxy e configurare le sue regole per caricare il sito proxy da un host esterno. L’installazione e la configurazione del sito proxy per il caricamento del reverse proxy è responsabilità dell’amministratore del server secondario.

Avere il vostro sito principale ospitato presso Kinsta vi garantirà l’accesso al team di supporto di Kinsta. È possibile aprire un ticket di supporto con loro per aggiungere le regole standard di reverse proxy elencate in precedenza in questo articolo. Se necessario, potete anche aggiungere ulteriori personalizzazioni a tali regole.

In questo scenario, siete pienamente responsabili della configurazione del sito proxy per caricarlo correttamente sul reverse proxy.

Come Impostare Nginx Come Reverse Prroxy?

Se Kinsta non ospita il vostro sito web e siete voi a gestire i vostri server, allora dovete impostare voi stessi il reverse proxy e configurarlo in modo ce punti verso il sito proxy.

A seconda del sistema operativo del vostro server web, è possibile installare Nginx in modo diverso. Per le distribuzioni Linux, potete usare vari pacchetti Nginx basati sulla versione della vostra distribuzione Linux.

Nell’esempio che segue, abbiamo installato il sito principale al nome di dominio example.com, mentre il sito WordPress proxy è installato al sottodominio blog.domain.com. Entrambi sono alimentati da Apache su un server web che gira su Ubuntu 18.04. Installeremo e configureremo Nginx come reverse proxy sul server principale.

1. Installare Nginx

Per iniziare, accedete al terminale del vostro server tramite SSH. Poi usate il comando apt-get per aggiornare la lista dei pacchetti della vostra distribuzione e installate Nginx sul vostro server web.

sudo apt update
sudo apt install nginx

2. Configurare Nginx per le richieste proxy

Successivamente, dovete configurare Nginx alle richieste di proxy per i domini ospitati su Apache. Per fare ciò, create un nuovo file host virtuale. Qui, stiamo usando il nano editor per aggiungere il codice, ma voi potete usare qualsiasi editor di codice di vostra scelta.

sudo nano /etc/nginx/sites-available/example.com.conf

Quindi impostate le direttive Nginx per inoltrare le richieste ad Apache aggiungendo i seguenti blocchi server {...} e location:

server {
listen      80;
server_name example.com www.example.com;
index       index.php;
root        /var/www/example.com/public    # fallback for index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}location /blog {
proxy_pass http://blog.domain.com;proxy_http_version                 1.1;
proxy_cache_bypass                 $http_upgrade;

# Proxy headers
proxy_set_header Upgrade           $http_upgrade;
proxy_set_header Connection        "upgrade";
proxy_set_header Host              $host;
proxy_set_header X-Real-IP         $remote_addr;
proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Host  $host;
proxy_set_header X-Forwarded-Port  $server_port;

# Proxy timeouts
proxy_connect_timeout              60s;
proxy_send_timeout                 60s;
proxy_read_timeout                 60s;
}

Nel codice di cui sopra, sto definendo un link alla sottodirectory example.com/blog che sarà servito dal server Apache. Assicuratevi di utilizzare l’indirizzo IP pubblico (o URL) del vostro sito web nella direttiva proxy_pass. Nel nostro caso, il nostro sito web proxy è ospitato nel sottodominio blog.domain.com.

Nota: Assicuratevi che il sito web proxy sia installato e pronto per essere servito prima di apportare qualsiasi modifica.

Per saperne di più su tutte le direttive reverse proxy utilizzate date un’occhiata all’indice dettagliato delle direttive di Nginx.

3. Salvare il file host virtuale creato

Salvate il file host virtuale. Quindi attivate il nuovo host virtuale creando un link simbolico per i file chiamati example.com.conf sia nelle directory /etc/nginx/sites-available che in quelle /etc/nginx/sites-enabled.

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

4. Testare gli errori di Nginx

Dopo di che, testate Nginx per eventuali errori di configurazione.

sudo nginx -t

Se non ci sono errori, ricaricate Nginx per far rispettare le modifiche.

sudo systemctl reload nginx

Ora avete impostato con successo Nginx per farlo funzionare come reverse proxy. Per confermarlo, potete usare la funzione phpinfo() per controllare le variabili PHP caricate quando visitate il vostro sito proxy.

Sotto le variabili SERVER_SOFTWARE e DOCUMENT_ROOT PHP, vedrete che Apache serve questo dominio sul backend. Ma le variabili PHP HTTP_X_REAL_IP e HTTP_X_FORWARDED_FOR confermano che Nginx è stato usato come reverse proxy per inoltrare le richieste.

Potete velocizzare il servizio del vostro sito WordPress su Nginx utilizzando i moduli fastcgi_cache e ngx_cache_purge. Mentre il primo modulo metterà in cache il vostro sito, il secondo modulo eliminerà automaticamente la cache in base a eventi specifici (ad esempio, la pubblicazione o la modifica di un post/pagina di WordPress).

È possibile utilizzare il plugin WordPress Nginx Cache Controller per controllare la cache del server proxy di Nginx direttamente dalla bacheca di amministrazione di WordPress. Se usate un’installazione WordPress Multisite, è possibile utilizzare il plugin Nginx Helper.

Consultate la documentazione principale di Nginx e la guida all’installazione di Nginx WordPress per una panoramica dettagliata su come lavorare con Nginx e WordPress.

Come Impostare Apache come Reverse Proxy?

Prima di iniziare, assicuratevi di avere due siti web attivi e funzionanti su example.com e blog.domain.com. Il primo sito web può essere o meno un sito WordPress, ma il secondo dovrebbe essere un sito WordPress in quanto viene utilizzato principalmente per caricare il blog del dominio principale all’indirizzo example.com/blog.

1. Iniziare a configurare Apache

È possibile farlo aprendo il terminale del server tramite SSH e abilitando il modulo proxy di Apache.

sudo a2enmod proxy proxy_http ssl

L’esecuzione del comando di cui sopra molto probabilmente riavvierà Apache per ricaricare le direttive appena definite.

2. Creare un proxy inverso

Successivamente, modificate il file host virtuale del server principale per creare un reverse proxy. Ecco il codice da aggiungere:

<VirtualHost *>
DocumentRoot /var/www/app/public
SSLProxyEngine On    ProxyRequests off
ProxyPass /blog http://blog.domain.com
ProxyPassReverse /blog  http://blog.domain.com
</VirtualHost>

La direttiva ProxyPass creerà un proxy inverso per i percorsi specificati, mentre la direttiva ProxyPassReverse intercetterà le intestazioni di risposta HTTP inviate attraverso questo reverse proxy e le riscriverà per farle corrispondere al server Apache.

3. Modificare il file wp-config.php

Dopo aver salvato il file, è necessario modificare il file wp-config.php aggiungendo il seguente codice appena prima della riga che chiede di interrompere la modifica.

# ProxyPass Settings
# overrides the variables below to ensure that any
# request to /blog/* subdirectory is taken care of properly
$_SERVER['REQUEST_URI'] = '/blog' . $_SERVER['REQUEST_URI'];
$_SERVER['SCRIPT_NAME'] = '/blog' . $_SERVER['SCRIPT_NAME'];
$_SERVER['PHP_SELF'] = '/blog' . $_SERVER['PHP_SELF'];

4. Aggiornare il database del sito WordPress

Infine, è necessario aggiornare il database del sito WordPress per aggiungere i valori di configurazione per il link della sottodirectory /blog. È possibile farlo eseguendo la seguente query SQL:

UPDATE wp_options SET option_value = 'https://www.example.com/blog' WHERE option_name IN( 'siteurl', 'home' );

Ora dovreste essere in grado di visitare l’URL https://www.example.com/blog e far sì che il vostro sito WordPress sia ospitato nel sottodominio http://blog.domain.com senza modificare l’URL. Potete continuare a usare WordPress come al solito per navigare, scrivere, modificare e gestire il vostro sito.

Quali sono le limitazioni di un proxy inverso?

  • Un reverse proxy rappresenta un rischio significativo per la sicurezza in quanto è in grado di leggere e modificare tutto il traffico che lo attraversa. Se si fa passare il traffico HTTPS attraverso il reverse proxy, allora lui deve decifrare e ricodificare i dati in transito. Ciò significa che deve possedere le chiavi private del certificato SSL/TLS. Così, se qualche malintenzionato riesce a compromettere il vostro reverse proxy, può registrare le password e iniettare malware nei vostri siti web.
  • Se voi o i vostri utenti non potete accedere direttamente al vostro server principale, l’utilizzo di un proxy inverso può portare a un unico punto di rottura. Ad esempio, se usate un proxy inverso come una copertura per servire più domini, la sua interruzione può far sì che tutti i domini vadano offline contemporaneamente.
  • Se vi affidate a un proxy inverso di terze parti (ad esempio Cloudflare), allora consegnate loro le informazioni sensibili del vostro sito. Anche se vi fidate di loro, non si possono mai prevedere tutte le conseguenze.
  • Il ripristino dei backup o la spinta dei siti di staging live su siti web che si caricano su un proxy inverso può impedire che il sito proxy si carichi correttamente.

Scelta tra un CDN e un Reverse Proxy

I CDN sono una forma avanzata di reverse proxy con la maggior parte della configurazione e della manutenzione curata da terzi. Possono fornire incredibili vantaggi in termini di prestazioni al vostro sito WordPress con un piccolo sforzo da parte vostra.

I CDN non solo mettono nella cache i contenuti e li servono rapidamente agli utenti, ma riducono anche il carico sui vostri server di origine, abbassano i costi della larghezza di banda, forniscono un ulteriore livello di sicurezza, migliorano la SEO del vostro sito e vi aiutano a scalare meglio il vostro sito web.

.

Noterete che la maggior parte delle prestazioni fornite dai CDN sono le stesse di quelle fornite dai reverse proxy. Quindi, dovreste scegliere un CDN piuttosto che un reverse proxy, o viceversa?

Non c’è motivo di accontentarsi di uno solo. Se avete già installato un reverse proxy, vedrete comunque i vantaggi in termini di velocità e prestazioni derivanti dall’utilizzo di un CDN. Entrambi i loro cache layer sono ben stratificati, e se avete delle esigenze di gestione delle richieste uniche (ad esempio contenuti dinamici o ecommerce), allora potete configurarlo facilmente con alcune intestazioni personalizzate passate dal CDN o dal reverse proxy.

Proxy inverso – Domande Frequenti

Ecco alcune domande più frequenti che possono aiutarvi a capire tutto ciò che riguarda un proxy inverso.

Qual è lo scopo di un proxy inverso?

Mascherare la posizione di un sito esterno, per farlo sembrare parte del dominio principale. Ad esempio, un’università potrebbe avere una sezione di login per gli studenti per controllare i loro voti. Invece di ospitare questo sito in WordPress, probabilmente hanno un server situato nel loro campus che esegue un software di valutazione. Invece di dire agli studenti di andare su https://123.123.123.123/~students/gradeing_software/some/long/url/, possono semplicemente utilizzare un proxy inverso in modo che gli studenti vadano su https://university.edu/grades e sembri che faccia parte del sito principale, mentre in realtà è ospitato su un’altra piattaforma.

Il CDN è un proxy inverso?

No, un CDN è una rete di distribuzione dei contenuti che aiuta a velocizzare il servizio di parti del sito web da una posizione più vicina a quella del visitatore.

Un Load Balancer è un proxy inverso?

No, un load balancer è uno strumento per distribuire il traffico. Ad esempio, un sito molto trafficato potrebbe avere un bilanciatore di carico che distribuisce il traffico a più server web. I server web hanno tutti un mirror degli stessi file del sito, ma questo permette al sito di gestire più traffico del normale, poiché il load balancer distribuisce il traffico in entrata a ogni server web, in modo che nessun singolo server web debba gestire tutto il traffico in entrata contemporaneamente. Quindi, se un server web è impostato per gestire 10k visite al minuto e avete due server web dietro un load balancer, in teoria il sito è in grado di gestire 20k visite al minuto.

Un gateway API è un proxy inverso?

No, un’API consente semplicemente di eseguire comandi su una piattaforma senza dover accedere a un’interfaccia utente per gestire un sito. Con l’API, un cliente può pubblicare un nuovo post sul proprio sito WordPress senza dover accedere alla bacheca di WordPress.

Chi ha bisogno di un Proxy Inverso?

Si tratta di una valutazione caso per caso. Non tutti hanno bisogno di un proxy inverso, ma nel caso dell’Università di cui sopra, ha senso averne uno. Ciò può avvenire anche per altri motivi, come nel caso di Ford/Chevy/ecc. che potrebbero avere una sezione “Costruisci la tua auto” sul proprio sito, che non fa parte del sito principale, ma è invece una piattaforma di costruzione/personalizzazione di auto che vogliono avere come parte del sito principale, come https://ford.com/buildmycar anziché https://carbuildingplatform.com/ford/build/customcar/.

Riepilogo

WordPress è molto flessibile. Potete usarlo come blog, sito di ecommerce o anche come sistema di gestione dell’apprendimento. Nella maggior parte dei casi, è possibile personalizzare WordPress in base alle vostre esigenze.

Tuttavia, a volte potrebbe essere necessario utilizzare un dominio separato o un server secondario per ospitare un sito aggiuntivo. Come discusso in precedenza, questo può essere dovuto all’utilizzo di stack tecnologici diversi per un sito aziendale di grandi dimensioni o al lancio di un blog WordPress per un sito non WordPress preesistente.

Un reverse proxy può aiutare in entrambi i casi, aiutandovi a ottenere il massimo da WordPress senza rinunciare al sito web principale e ricominciare da capo.

Salman Ravoof

Salman Ravoof is a self-taught web developer, writer, creator, and a huge admirer of Free and Open Source Software (FOSS). Besides tech, he's excited by science, philosophy, photography, arts, cats, and food. Learn more about him on his website, and connect with Salman on Twitter.