Varnish: Difference between revisions
Kokkuvõte |
SyntaxHighlight asendamine Pre tagiga, silmad hakkasid valutama. |
||
Line 37: | Line 37: | ||
===Apache konfigureerimine=== | ===Apache konfigureerimine=== | ||
Apache2 tuleb kuulama panna localhost, selleks on vaja <code>/etc/apache2/ports.conf</code> konfiguratsiooni failis vaja muuta vaikimisi kuulamis port 80 pealt 8080 peale. | Apache2 tuleb kuulama panna localhost, selleks on vaja <code>/etc/apache2/ports.conf</code> konfiguratsiooni failis vaja muuta vaikimisi kuulamis port 80 pealt 8080 peale. | ||
Listen 8080 | Listen 8080 | ||
Järgmisena tuleb muuta virtualhosti failis olev kuulatav port. | Järgmisena tuleb muuta virtualhosti failis olev kuulatav port. | ||
Siin näites kasutame Apache2 vaikelehe konfiguratsiooni faili <code>/etc/apache2/sites-available/000-default.conf</code>. | Siin näites kasutame Apache2 vaikelehe konfiguratsiooni faili <code>/etc/apache2/sites-available/000-default.conf</code>. | ||
Kus tuleb muuta vaikimisi kuulatav port 80 meile vajalikuks port 8080 peale. Seda saab teha manuaalselt tekstiredaktoriga, kuid kui on vaja mitu faili muuta siis on mõtekas kasutusele võtta käsurea utiliit [[sed]] | Kus tuleb muuta vaikimisi kuulatav port 80 meile vajalikuks port 8080 peale. Seda saab teha manuaalselt tekstiredaktoriga, kuid kui on vaja mitu faili muuta siis on mõtekas kasutusele võtta käsurea utiliit [[sed]] | ||
cd /etc/apache2/sites-available | cd /etc/apache2/sites-available | ||
sed 's/:80/:8080/' 000-default.conf -i | sed 's/:80/:8080/' 000-default.conf -i | ||
Kuna hetkeseisuga on konfiguratsioon selline, et Varnish saab kirjeid Apachelt ja külastajate IP addressiks logitakse lokaalse masina IP. | Kuna hetkeseisuga on konfiguratsioon selline, et Varnish saab kirjeid Apachelt ja külastajate IP addressiks logitakse lokaalse masina IP. | ||
Paigaldame Apachele lisamooduli, et kuvataks kliendi õige ip aadress: | Paigaldame Apachele lisamooduli, et kuvataks kliendi õige ip aadress: | ||
apt-get install libapache2-mod-rpaf | apt-get install libapache2-mod-rpaf | ||
===Varnish Paigaldus=== | ===Varnish Paigaldus=== | ||
Kuna Varnishi repositoorium<ref>[https://www.varnish-cache.org/installation/ubuntu Installation on Ubuntu]</ref> on turvalisel http kanalil siis on vaja laiendada apt utiliiti, et see oleks võimeline tõlgendama https:// aadresse, kui vastav laiendus pole paigaldatud siis saab selle Ubuntus installeerida järgnevalt: | Kuna Varnishi repositoorium<ref>[https://www.varnish-cache.org/installation/ubuntu Installation on Ubuntu]</ref> on turvalisel http kanalil siis on vaja laiendada apt utiliiti, et see oleks võimeline tõlgendama https:// aadresse, kui vastav laiendus pole paigaldatud siis saab selle Ubuntus installeerida järgnevalt: | ||
apt-get install apt-transport-https | apt-get install apt-transport-https | ||
Lisame Varnish Repositooriumi krüptovõtme, et apt oleks suuteline autentida repositooriumist alla laetavaid faile: | Lisame Varnish Repositooriumi krüptovõtme, et apt oleks suuteline autentida repositooriumist alla laetavaid faile: | ||
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add - | curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add - | ||
Lisame Varnish Cache repositooriumi Ubuntu 14.04 Trusty Tahr jaoks oma apt utiliidi allikate loendisse: | Lisame Varnish Cache repositooriumi Ubuntu 14.04 Trusty Tahr jaoks oma apt utiliidi allikate loendisse: | ||
echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list | echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list | ||
Uuendame repositooriumi ja paigaldame Varnishi: | Uuendame repositooriumi ja paigaldame Varnishi: | ||
apt-get update && apt-get install varnish | apt-get update && apt-get install varnish | ||
===Varnishi konfiguratsiooni muutmine=== | ===Varnishi konfiguratsiooni muutmine=== | ||
Muudame Varnishi konfiguratsiooni faili <code>/etc/default/varnish</code>, et Varnish kuulaks vaikimisi port 80 ja muudame VCL faili asukohta. Siin näites on kasutusele võetud <code>/etc/varnish/meieleht.vcl</code>: | Muudame Varnishi konfiguratsiooni faili <code>/etc/default/varnish</code>, et Varnish kuulaks vaikimisi port 80 ja muudame VCL faili asukohta. Siin näites on kasutusele võetud <code>/etc/varnish/meieleht.vcl</code>: | ||
< | <pre> | ||
DAEMON_OPTS="-a :80 \ | DAEMON_OPTS="-a :80 \ | ||
-T localhost:6082 \ | -T localhost:6082 \ | ||
Line 79: | Line 78: | ||
-S /etc/varnish/secret \ | -S /etc/varnish/secret \ | ||
-s malloc,256m" | -s malloc,256m" | ||
</ | </pre> | ||
Kopeerime vcl struktuuri vaikefailist <code>default.vcl</code> uude faili <code>meieleht.vcl</code>: | Kopeerime vcl struktuuri vaikefailist <code>default.vcl</code> uude faili <code>meieleht.vcl</code>: | ||
cp /etc/varnish/default.vcl /etc/varnish/meieleht.vcl | cp /etc/varnish/default.vcl /etc/varnish/meieleht.vcl | ||
Täiendame faili <code>meieleht.vcl</code>, et tõsta Apache turvalisust Varnishi abiga. | Täiendame faili <code>meieleht.vcl</code>, et tõsta Apache turvalisust Varnishi abiga. | ||
<<!-- Note style viksitud ArchWikist -->div style="padding: 5px; margin: 0.50em 0; background-color: #DDDDFF; border: thin solid #BBBBDD; overflow: hidden;">'''Märge: '''Esialgne juhend kasutas Varnish 2.1, mille süntaks erineb natukene Varnish 4.0.3 omast. <ref>[https://www.varnish-cache.org/docs/trunk/whats-new/upgrade-4.0.html Süntaksi muudatused versioon Varnish 4.0 versioonis]</ref></div> | <<!-- Note style viksitud ArchWikist -->div style="padding: 5px; margin: 0.50em 0; background-color: #DDDDFF; border: thin solid #BBBBDD; overflow: hidden;">'''Märge: '''Esialgne juhend kasutas Varnish 2.1, mille süntaks erineb natukene Varnish 4.0.3 omast. <ref>[https://www.varnish-cache.org/docs/trunk/whats-new/upgrade-4.0.html Süntaksi muudatused versioon Varnish 4.0 versioonis]</ref></div> | ||
< | <pre> | ||
sub vcl_recv { | sub vcl_recv { | ||
# Add a unique header containing the client address. | # Add a unique header containing the client address. | ||
Line 121: | Line 120: | ||
unset resp.http.X-Powered-By; | unset resp.http.X-Powered-By; | ||
} | } | ||
</ | </pre> | ||
===Deemonite restart=== | ===Deemonite restart=== | ||
Kõigepealt tuleb taaskäivitada Apache teenus: | Kõigepealt tuleb taaskäivitada Apache teenus: | ||
service apache2 restart | service apache2 restart | ||
Järgnevalt kontrollime, kas Apache kuulab meie poolt konfigureeritud pordi peal netstat utiliidiga: | Järgnevalt kontrollime, kas Apache kuulab meie poolt konfigureeritud pordi peal netstat utiliidiga: | ||
netstat -lp | grep apache2 | netstat -lp | grep apache2 | ||
Tulemus peab olema taoline: | Tulemus peab olema taoline: | ||
tcp 0 0 localhost:8080 *:* LISTEN 4586/apache2 | tcp 0 0 localhost:8080 *:* LISTEN 4586/apache2 | ||
Taaskäivitame Varnishi teenuse: | Taaskäivitame Varnishi teenuse: | ||
service varnish restart | service varnish restart | ||
Kontrollime, kas Varnishi teenus kuulab õigelt pordilt: | Kontrollime, kas Varnishi teenus kuulab õigelt pordilt: | ||
netstat -lp | grep varnish | netstat -lp | grep varnish | ||
Tulemus peab olema taoline: | Tulemus peab olema taoline: | ||
tcp 0 0 *:www *:* LISTEN 4498/varnishd | tcp 0 0 *:www *:* LISTEN 4498/varnishd | ||
tcp6 0 0 [::]:www [::]:* LISTEN 4498/varnishd | tcp6 0 0 [::]:www [::]:* LISTEN 4498/varnishd | ||
Varnish on ka võimeline ipv6 pealt kuulamisega. | Varnish on ka võimeline ipv6 pealt kuulamisega. | ||
Line 164: | Line 163: | ||
Lisada oma Varnish konfiguratsiooni .vcl read: | Lisada oma Varnish konfiguratsiooni .vcl read: | ||
Näiteks failis <code>/etc/varnish/meieleht.vcl</code> | Näiteks failis <code>/etc/varnish/meieleht.vcl</code> | ||
< | <pre> | ||
sub vcl_recv { | sub vcl_recv { | ||
# Rename the incoming XFF header to work around a Varnish bug. | # Rename the incoming XFF header to work around a Varnish bug. | ||
Line 176: | Line 175: | ||
} | } | ||
} | } | ||
</ | </pre> | ||
====Apache pool==== | ====Apache pool==== | ||
Konfigureerime Apachet uut logimis formaati kasutama jäsklusega, mis loob faili <code>varnish-log</code>. | Konfigureerime Apachet uut logimis formaati kasutama jäsklusega, mis loob faili <code>varnish-log</code>. | ||
echo 'LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" varnishcombined' > /etc/apache2/conf.d/varnish-log | echo 'LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" varnishcombined' > /etc/apache2/conf.d/varnish-log | ||
Samuti tuleb igal oma virtualhostil (nt. <code>000-default.conf</code>) juures muuta logifaili formaadis sõne <code>combined</code> järgnevaks sõneks <code>varnishcombined</code>, jällegi oleks kasulik rakendada <code>sed</code>i utiliiti. | Samuti tuleb igal oma virtualhostil (nt. <code>000-default.conf</code>) juures muuta logifaili formaadis sõne <code>combined</code> järgnevaks sõneks <code>varnishcombined</code>, jällegi oleks kasulik rakendada <code>sed</code>i utiliiti. | ||
cd /etc/apache2/sites-available/ | cd /etc/apache2/sites-available/ | ||
sed 's/combined/varnishcombined/' 000-default.conf -i | sed 's/combined/varnishcombined/' 000-default.conf -i | ||
Vahepealseks etapiks on teenuste taaskäivitamine: | Vahepealseks etapiks on teenuste taaskäivitamine: | ||
service apache2 restart && service varnish restart | service apache2 restart && service varnish restart | ||
Siis tuleb virtualhostid välja ja sisse lülitada: | Siis tuleb virtualhostid välja ja sisse lülitada: | ||
a2dissite 000-default.conf n2ide.conf n2ide3.conf | a2dissite 000-default.conf n2ide.conf n2ide3.conf | ||
a2ensite 000-default.conf n2ide.conf n2ide3.conf | a2ensite 000-default.conf n2ide.conf n2ide3.conf | ||
====Tulemuse kontroll==== | ====Tulemuse kontroll==== | ||
Ühenda kliendiga veebiserveri külge ja vaata Apache2 <code>access.log</code> faili, mis ip logitakse. | Ühenda kliendiga veebiserveri külge ja vaata Apache2 <code>access.log</code> faili, mis ip logitakse. | ||
tail /var/log/apache2/access.log | tail /var/log/apache2/access.log | ||
==Security.VCL paigaldamine== | ==Security.VCL paigaldamine== | ||
Line 211: | Line 206: | ||
Security.vcl on Web Application tulemüür, mis on rakendatud vcl(Varnish Control Language) keeles.<ref>[https://github.com/comotion/security.vcl/blob/master/README Security.vcl README]</ref> | Security.vcl on Web Application tulemüür, mis on rakendatud vcl(Varnish Control Language) keeles.<ref>[https://github.com/comotion/security.vcl/blob/master/README Security.vcl README]</ref> | ||
Oma funktsiooni poolest sarnaneb [[mod_security]]le, aga on rakendatud teist | Oma funktsiooni poolest sarnaneb [[mod_security]]le, aga on rakendatud teist moodi. | ||
Esimese sammuna tuleks paigaldada vajalikud utiliidid kompileerimiseks: | Esimese sammuna tuleks paigaldada vajalikud utiliidid kompileerimiseks: | ||
apt-get install git make | apt-get install git make | ||
Siis tuleks kloonida [[git]]i repositooriumis olev algmaterjal: | Siis tuleks kloonida [[git]]i repositooriumis olev algmaterjal: | ||
git clone https://github.com/comotion/security.vcl.git | git clone https://github.com/comotion/security.vcl.git | ||
Järgmiste sammudena on vaja repositooriumis olev rakendus paigaldada ja luua sümboolne link Varnishi konfiguratsiooni kausta: | Järgmiste sammudena on vaja repositooriumis olev rakendus paigaldada ja luua sümboolne link Varnishi konfiguratsiooni kausta: | ||
cd security.vcl/vcl/ | cd security.vcl/vcl/ | ||
sudo make | sudo make | ||
cd .. | cd .. | ||
sudo ln -s $PWD/vcl/ /etc/varnish/security | sudo ln -s $PWD/vcl/ /etc/varnish/security | ||
Lisa Varnishi .vcl conf faili järgnev rida <code>backend default</code> koodiploki alla: | Lisa Varnishi .vcl conf faili järgnev rida <code>backend default</code> koodiploki alla: | ||
include "/etc/varnish/security/main.vcl"; | include "/etc/varnish/security/main.vcl"; | ||
Välja peaks nägema nii: | Välja peaks nägema nii: | ||
< | <pre> | ||
backend default { | backend default { | ||
.host = "127.0.0.1"; | .host = "127.0.0.1"; | ||
Line 245: | Line 237: | ||
include "/etc/varnish/security/main.vcl"; | include "/etc/varnish/security/main.vcl"; | ||
</ | </pre> | ||
Taaskäivita Varnishi teenus. | Taaskäivita Varnishi teenus. | ||
service varnish restart | service varnish restart | ||
===Tulemuse kontroll=== | ===Tulemuse kontroll=== | ||
Proovi nüüd minna enda veebiserveri külge aadressiga: | Proovi nüüd minna enda veebiserveri külge aadressiga: | ||
<nowiki>http://<sinu serveri ip>/javascript:</nowiki> | |||
Kui kõik toimib tuleb vastuseks: | Kui kõik toimib tuleb vastuseks: | ||
Error 403 Naughty, not nice! | |||
==Kokkuvõte== | ==Kokkuvõte== |
Revision as of 20:09, 25 May 2015
Varnish kasutatakse veebilehekülgede kiirendamiseks. Teenus installeeritakse HTTP serveri ette ning tehakse vastavad muutused sisu puhverdamiseks.
Varnish tavaliselt kiirendab andmete laadimist 300-1000 kordselt sõltuvalt veebilehe ülesehitusest. Varnish Cache hoiab veebilehti vahemälus kiirendades sellega javaskriptide ning piltide laadimist. Lisaks kasutatakse seda ka koormuse tasakaalustamiseks ning turvalisuse suurendamiseks.[1]
Ajalugu
Projekti algatas Norra suurim tabloidformaadis ajaleht Verdens Gang[2]. Arhitekt ja juhtiv arendaja on Taani konsultant Poul-Henning Kamp (tuntud kui FreeBSDcore arendaja).[3] Varnish Cache tugi, haldus ja arendus koondus hiljem eraldi haruks - Varnish Software[4].
Varnishi versioon 1.0 avalikustati aastal 2006[5], Varnish 2.0 aastal 2008[6], Varnish 3.0 aastal 2011[7] ja Varnish 4.0 aastal 2014[8].
Arhitektuur
Varnish Cache salvestab andmed virtuaalmällu ja jätab otsustada, mis salvestatakse mällu ja mida suunatakse ketta operatsioonisüsteemi. See aitab vältida olukorda, kus operatsioonisüsteem hakkab andmeid suunama vahemällu samal ajal kui nad paigutatakse rakenduse poolt kettale.
Lisaks on Varnishi tugevalt "keermestatud", iga kliendi ühendust käsitletakse kui eraldi "keeret". Kui seadistatud aktiivsete "keerete" arv on täidetud, paigutatakse sisenevad ühendused ülevoolu järjekorda. Kui kui see järjekord jõuab teatud piirini, hakkab süsteem sissetulevaid ühendusi tagasi lükkama.
Peamine seadistamise mehhanism on VCL (Varnishi Configuration Language). Enamus kasutajapoliitika otsuseid jäetakse VCL koodi, mis muudab Varnishi palju rohkem seadistatavaks ja kohanemisvõimelisemaks kui enamik teisi HTTP kiirendeid. Kui VLC skript on laetud, tõlgitakse see "C" keelde, kompileeritakse, et jagada objektid süsteemi poolt kompilaatorisse ja seotakse otse kiirendiga.
Arvu run-time parameetrid kontrollivad näiteks maksimaalset ja minimaalset aktiivsete keerete arvu, nende erinevaid süsteemipause jne. Käsurea juhtimise liides võimaldab neid parameetreid muuta, uusi VCL skripte kompileerida, laadida ja aktiveerida kiirendile taaskäivitust tegemata.
Selleks, et vähendada süsteemi päringute arvu kiirelt miinimumini, on logi-andmed salvestatud mällu ning logi-andmete filtreerimine, vorminine ning kirjutamine aktiivsele kettale kettale.[9]
Varnishi paigaldamine turvalisuse suurendamiseks
Järgneva juhendi[11] abil on võimalik sättida Varnish ülesse nii, et mitte-täielikud HTTP päringud püütakse kinni Varnishi teenuse poolt. Esialgne juhend on kohandatud uuema Varnishi versiooni ja Ubuntu väljalaske jaoks.
Apache konfigureerimine
Apache2 tuleb kuulama panna localhost, selleks on vaja /etc/apache2/ports.conf
konfiguratsiooni failis vaja muuta vaikimisi kuulamis port 80 pealt 8080 peale.
Listen 8080
Järgmisena tuleb muuta virtualhosti failis olev kuulatav port.
Siin näites kasutame Apache2 vaikelehe konfiguratsiooni faili /etc/apache2/sites-available/000-default.conf
.
Kus tuleb muuta vaikimisi kuulatav port 80 meile vajalikuks port 8080 peale. Seda saab teha manuaalselt tekstiredaktoriga, kuid kui on vaja mitu faili muuta siis on mõtekas kasutusele võtta käsurea utiliit sed
cd /etc/apache2/sites-available sed 's/:80/:8080/' 000-default.conf -i
Kuna hetkeseisuga on konfiguratsioon selline, et Varnish saab kirjeid Apachelt ja külastajate IP addressiks logitakse lokaalse masina IP. Paigaldame Apachele lisamooduli, et kuvataks kliendi õige ip aadress:
apt-get install libapache2-mod-rpaf
Varnish Paigaldus
Kuna Varnishi repositoorium[12] on turvalisel http kanalil siis on vaja laiendada apt utiliiti, et see oleks võimeline tõlgendama https:// aadresse, kui vastav laiendus pole paigaldatud siis saab selle Ubuntus installeerida järgnevalt:
apt-get install apt-transport-https
Lisame Varnish Repositooriumi krüptovõtme, et apt oleks suuteline autentida repositooriumist alla laetavaid faile:
curl https://repo.varnish-cache.org/GPG-key.txt | apt-key add -
Lisame Varnish Cache repositooriumi Ubuntu 14.04 Trusty Tahr jaoks oma apt utiliidi allikate loendisse:
echo "deb https://repo.varnish-cache.org/ubuntu/ trusty varnish-4.0" >> /etc/apt/sources.list.d/varnish-cache.list
Uuendame repositooriumi ja paigaldame Varnishi:
apt-get update && apt-get install varnish
Varnishi konfiguratsiooni muutmine
Muudame Varnishi konfiguratsiooni faili /etc/default/varnish
, et Varnish kuulaks vaikimisi port 80 ja muudame VCL faili asukohta. Siin näites on kasutusele võetud /etc/varnish/meieleht.vcl
:
DAEMON_OPTS="-a :80 \ -T localhost:6082 \ -f /etc/varnish/meieleht.vcl \ -S /etc/varnish/secret \ -s malloc,256m"
Kopeerime vcl struktuuri vaikefailist default.vcl
uude faili meieleht.vcl
:
cp /etc/varnish/default.vcl /etc/varnish/meieleht.vcl
Täiendame faili meieleht.vcl
, et tõsta Apache turvalisust Varnishi abiga.
sub vcl_recv { # Add a unique header containing the client address. unset req.http.X-Forwarded-For; set req.http.X-Forwarded-For = client.ip; # Added security, the "w00tw00t" attacks are pretty annoying so let's block # it before it reaches our webserver. if (req.url ~ "^/w00tw00t") { return (synth(403, "Not permitted")); } } sub vcl_backend_response { # Remove the X-Forwarded-For header if it exists. unset bereq.http.X-Forwarded-For; # Insert the client IP address as X-Forwarded-For. # This is the normal IP address of the user. set bereq.http.X-Forwarded-For = bereq.http.rlnclientipaddr; # Deliver the content return (deliver); } sub vcl_deliver { # We'll be hiding some headers added by Varnish. We want to make sure people # are not seeing that we are using Varnish. # Since we're not caching (yet), why bother telling people we are using it? unset resp.http.X-Varnish; unset resp.http.Via; unset resp.http.Age; # We'd like to hide the X-Powered-By headers. Nobody has to know we can run # PHP and have version XYZ of it. unset resp.http.X-Powered-By; }
Deemonite restart
Kõigepealt tuleb taaskäivitada Apache teenus:
service apache2 restart
Järgnevalt kontrollime, kas Apache kuulab meie poolt konfigureeritud pordi peal netstat utiliidiga:
netstat -lp | grep apache2
Tulemus peab olema taoline:
tcp 0 0 localhost:8080 *:* LISTEN 4586/apache2
Taaskäivitame Varnishi teenuse:
service varnish restart
Kontrollime, kas Varnishi teenus kuulab õigelt pordilt:
netstat -lp | grep varnish
Tulemus peab olema taoline:
tcp 0 0 *:www *:* LISTEN 4498/varnishd tcp6 0 0 [::]:www [::]:* LISTEN 4498/varnishd
Varnish on ka võimeline ipv6 pealt kuulamisega.
Nüüd on Varnish paigaldatud Apache2 ette ja sait peab nüüd töötama. Kui Apache2 peatada kuvatakse Varnish error lehekülg.
Logimine
Veebilehe külastamisi saab jälgida /var/log/varnish/access.log
logi failist.
Detailsemate logide konfigureerimine
Vaikimisi kuvatakse Apache logides serveri aadressi asemel kliendi addres. Kuna kliendi asemel suhtleb Apache veebiserveriga Varnish, mis on lokaalse masina peal siis see tähendab, et logifailides kuvatakse iga kirje puhul serveri enda aadressi. [14]
VCL faili reeglid
Lisada oma Varnish konfiguratsiooni .vcl read:
Näiteks failis /etc/varnish/meieleht.vcl
sub vcl_recv { # Rename the incoming XFF header to work around a Varnish bug. if (req.http.X-Forwarded-For) { # Append the client IP set req.http.X-Real-Forwarded-For = req.http.X-Forwarded-For ", " regsub(client.ip, ":.*", ""); unset req.http.X-Forwarded-For; } else { # Simply use the client IP set req.http.X-Real-Forwarded-For = regsub(client.ip, ":.*", ""); } }
Apache pool
Konfigureerime Apachet uut logimis formaati kasutama jäsklusega, mis loob faili varnish-log
.
echo 'LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" varnishcombined' > /etc/apache2/conf.d/varnish-log
Samuti tuleb igal oma virtualhostil (nt. 000-default.conf
) juures muuta logifaili formaadis sõne combined
järgnevaks sõneks varnishcombined
, jällegi oleks kasulik rakendada sed
i utiliiti.
cd /etc/apache2/sites-available/ sed 's/combined/varnishcombined/' 000-default.conf -i
Vahepealseks etapiks on teenuste taaskäivitamine:
service apache2 restart && service varnish restart
Siis tuleb virtualhostid välja ja sisse lülitada:
a2dissite 000-default.conf n2ide.conf n2ide3.conf a2ensite 000-default.conf n2ide.conf n2ide3.conf
Tulemuse kontroll
Ühenda kliendiga veebiserveri külge ja vaata Apache2 access.log
faili, mis ip logitakse.
tail /var/log/apache2/access.log
Security.VCL paigaldamine
Security.vcl on Web Application tulemüür, mis on rakendatud vcl(Varnish Control Language) keeles.[15]
Oma funktsiooni poolest sarnaneb mod_securityle, aga on rakendatud teist moodi.
Esimese sammuna tuleks paigaldada vajalikud utiliidid kompileerimiseks:
apt-get install git make
Siis tuleks kloonida giti repositooriumis olev algmaterjal:
git clone https://github.com/comotion/security.vcl.git
Järgmiste sammudena on vaja repositooriumis olev rakendus paigaldada ja luua sümboolne link Varnishi konfiguratsiooni kausta:
cd security.vcl/vcl/ sudo make cd .. sudo ln -s $PWD/vcl/ /etc/varnish/security
Lisa Varnishi .vcl conf faili järgnev rida backend default
koodiploki alla:
include "/etc/varnish/security/main.vcl";
Välja peaks nägema nii:
backend default { .host = "127.0.0.1"; .port = "8080"; } include "/etc/varnish/security/main.vcl";
Taaskäivita Varnishi teenus.
service varnish restart
Tulemuse kontroll
Proovi nüüd minna enda veebiserveri külge aadressiga:
http://<sinu serveri ip>/javascript:
Kui kõik toimib tuleb vastuseks:
Error 403 Naughty, not nice!
Kokkuvõte
Varnishi abil on võimalik suht triviaalselt täiendada oma veebiserveri kiirust, mis on tänapäeval kindlasti üks väga tähtis korraliku veebiteenuse loomisel.
Kui pisut süveneda VCL süntaksi ja väga loetavasse dokumentatsiooni[16] on võimalik ilma lisa programmide nagu näiteks modsecurity tuua sisse tulemüüri funktsioone. Kindlasti tasub uurida ka Varnishi enda wikit[17], kust võib leida ka näite VCL faile, mida on rakendatud production süsteemides, mille pealt tasub šnitti võtta.
Viited
- ↑ About Varnish
- ↑ VG (Norway)| Varnish Software
- ↑ Notes from the Architect
- ↑ About Us | Varnish Software
- ↑ Varnish 1.0 released
- ↑ Varnish 2.0 released
- ↑ Varnish 3.0.0 released
- ↑ Varnish 4.0.0 released
- ↑ Varnish(software) Wikipedia
- ↑ Varnish Releases
- ↑ Putting Varnish In Front Of Apache On Ubuntu/Debian
- ↑ Installation on Ubuntu
- ↑ Süntaksi muudatused versioon Varnish 4.0 versioonis
- ↑ Configure Varnish to forward client ip addresses in Apache logs
- ↑ Security.vcl README
- ↑ Varnish Docs
- ↑ Varnish wiki