Varnish Apache · 3 min read · Jan 01, 2026

Mettere Varnish Davanti Ad Apache Su Ubuntu/Debian

Mettere Varnish Davanti Ad Apache Su Ubuntu/Debian

Versione 1.0, 15-10-2010
Seguimi su Twitter

Varnish è un “acceleratore web” open source che puoi utilizzare per velocizzare il tuo sito web.

Può memorizzare nella cache determinati elementi statici, come immagini o javascript, ma puoi anche usarlo per altri scopi come il bilanciamento del carico o qualche sicurezza aggiuntiva.

In questo tutorial ci concentreremo su quest’ultimo.
In questa modalità, Varnish fermerà le richieste HTTP incomplete prima che raggiungano il tuo server web Apache.

Questo tutorial è costruito su Ubuntu, ma probabilmente funzionerà anche su Debian.

Prima di tutto, assicurati di avere Apache2 in esecuzione e configurato.

Installare Varnish

Questo è piuttosto facile, poiché è nel repository di Ubuntu. Tuttavia, potresti voler utilizzare il repository di Varnish per assicurarti di avere una versione più recente. Per aggiungere questo, esegui questo:

sudo curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
sudo echo "deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-2.1" >> /etc/apt/sources.list

Aggiorna APT e installa Varnish:

sudo apt-get update
sudo apt-get install varnish

Ottimo, ora hai Varnish ma dobbiamo ancora configurarlo.

Cambiare le impostazioni di Varnish

Prima di tutto, dobbiamo cambiare la porta predefinita. Modifica /etc/default/varnish:

vim /etc/default/varnish

Scorri verso il basso fino a trovare una riga non commentata che inizia con “ DAEMON_OPTS “.

  • Cambia :6081* in :80* in modo che ascolti sulla porta HTTP predefinita.
  • modifica default.vcl in qualcos’altro, io ho scelto “mysite.vcl”.

Salva il file.

Modifica il file VCL che hai menzionato nel file precedente. Nel mio caso, modificherò /etc/varnish/mysite.vcl. Incolla il seguente contenuto:

## Reindirizza le richieste ad Apache, in esecuzione sulla porta 8000 su localhost
backend apache {
        .host = "127.0.0.1";
        .port = "8000";
}
## Recupera
sub vcl_fetch {
        ## Rimuovi l'intestazione X-Forwarded-For se esiste.
        remove req.http.X-Forwarded-For;
        
        ## inserisci l'indirizzo IP del client come X-Forwarded-For. Questo è l'indirizzo IP normale dell'utente.
        set    req.http.X-Forwarded-For = req.http.rlnclientipaddr;
        ## Sicurezza aggiuntiva, gli attacchi "w00tw00t" sono piuttosto fastidiosi quindi blocchiamoli prima che raggiungano il nostro server web
        if (req.url ~ "^/w00tw00t") {
                error 403 "Non permesso";
        }
        ## Consegna il contenuto
        return(deliver);
}

## Consegna
sub vcl_deliver {
        ## Nasconderemo alcune intestazioni aggiunte da Varnish. Vogliamo assicurarci che le persone non vedano che stiamo usando Varnish.
              ## Poiché non stiamo memorizzando nella cache (ancora), perché preoccuparsi di dire alle persone che lo usiamo?
        remove resp.http.X-Varnish;
        remove resp.http.Via;
        remove resp.http.Age;
        
        ## Ci piacerebbe nascondere le intestazioni X-Powered-By. Nessuno deve sapere che possiamo eseguire PHP e avere la versione xyz di esso.
        remove resp.http.X-Powered-By;
}

Salva il file. Va bene, questa era la parte di Varnish. Non avviarlo ancora.

Cambiare le impostazioni di Apache

OK, quindi dobbiamo far ascoltare Apache2 su localhost. Per questo, sono necessarie alcune piccole modifiche.

vim /etc/apache2/ports.conf

Cambia:

NameVirtualHost *:80
Listen 80

In:

NameVirtualHost *:8000
Listen 127.0.0.1:8000

Apache ascolterà su quella porta. Dovrai anche modificare i tuoi vhosts. Apri il tuo vhost(s) e sostituisci

con

Finora tutto bene. Ora dobbiamo installare un modulo Apache extra per assicurarci che l’indirizzo IP dell’utente sia corretto. Poiché Varnish sta sostanzialmente parlando con Apache2, vedresti 127.0.0.1 come IP del visitatore.

apt-get install libapache2-mod-rpaf

Il modulo RPAF (Reverse Proxy Add Forward) si assicurerà che l’IP di 127.0.0.1 venga sostituito con l’IP impostato in X-Forwarded-For impostato da Varnish.

Riavviare i demoni

Riavvia Apache:

/etc/init.d/apache2 restart

Controlla se è legato all’IP/Porta corretti eseguendo:

netstat -lp | grep apache2

Se vedi:

tcp        0      0 localhost:8000          *:*                     LISTEN      4586/apache2

Questo è corretto. Altrimenti, hai commesso un errore. Va bene, ora dobbiamo riavviare Varnish per farlo ascoltare sulla porta 80.

/etc/init.d/varnish restart

Controlliamo di nuovo eseguendo:

netstat -lp | grep varnish

Il risultato sarà:

tcp        0      0 *:www                   *:*                     LISTEN      4498/varnishd  
tcp6       0      0 [::]:www                [::]:*                  LISTEN      4498/varnishd

(Sì, varnish ascolta anche su qualsiasi indirizzo IPv6).

Quindi.. Ora abbiamo messo Varnish davanti ad Apache2. Possiamo testare se il sito funziona ancora semplicemente visitandolo. Vedrai il sito, proprio come se nulla fosse successo. Puoi testarlo ulteriormente spegnendo apache. Vedrai quindi una pagina di errore di Varnish.

Funzionalità bonus

Beh, potresti voler cambiare il nome del server HTTP da “Apache” a qualcos’altro. Questo può essere fatto modificando il tuo file VCL, situato in /etc/varnish. Dopo:

sub vcl_fetch {

Aggiungi:

## Rimuovi l'intestazione http.Server
unset obj.http.Server;
## Cambia l'intestazione http.Server in qualcos'altro
set obj.http.Server = "Incognito";

Ovviamente puoi farlo sembrare come vuoi. Yourdomain.com, per esempio. Si prega di notare che tutti i domini su questo server utilizzeranno lo stesso nome del server.

Bene, questo è tutto. Ora hai un proxy inverso davanti al tuo Apache!
Con un po’ di tweaking, puoi farlo memorizzare nella cache o bilanciare il carico.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.