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.listAggiorna APT e installa Varnish:
sudo apt-get updatesudo apt-get install varnishOttimo, 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/varnishScorri 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.confCambia:
NameVirtualHost *:80
Listen 80In:
NameVirtualHost *:8000
Listen 127.0.0.1:8000Apache 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-rpafIl 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 restartControlla se è legato all’IP/Porta corretti eseguendo:
netstat -lp | grep apache2Se vedi:
tcp 0 0 localhost:8000 *:* LISTEN 4586/apache2Questo è corretto. Altrimenti, hai commesso un errore. Va bene, ora dobbiamo riavviare Varnish per farlo ascoltare sulla porta 80.
/etc/init.d/varnish restartControlliamo di nuovo eseguendo:
netstat -lp | grep varnishIl 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.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.