Squid no és només un servei de proxy i cache, pot fer molt més: gestionar acl (llistes d'accés), filtrar contingut, fins i tot pot fer filtrat SSL i tot en mode transparent (mètode de proxy - sense haver de configurar en les opcions de servidor intermediari dels seus navegadors, és com man in the middle, ningú sap que hi és). Llavors comunament veig com es malgasta tot el potencial d'aquesta aplicació per no saber configurar cadascuna de les seves parts.
Ara l'interessant que fa squid és la memòria cau (al meu entendre). El teu em diràs ¿per què fer memòria cau ?, la raó és senzilla, administrar millor l'ús de la teva velocitat i ample de banda, és la primera preocupació. Pensa detingudament, 1000 persones en la teva empresa consultant cada 5 minuts, pà gines en comú, Google, Hotmail, Gmail, etc ... perquè vas a descarregar una vegada i una altra imatges, banners, publicitat, continguts html, tot això són coses està tiques, no canvien tan sovint, millor tenir-les emmagatzemades en la teva xarxa local i lliuraments una còpia que consideres recent dins de les configuracions que vas considerar.
Com es fa ?, senzill amb la següent sentència:
refresh_pattern [-i] regex min percent max [options]
Com sempre dic, no creguin en tot, aixà que t'invito a llegir de la font oficial. Us recomano llegir el manual d'aquesta sentència AQUI
La sentència refresh_pattern sempre serà la nostra etiqueta per afegir nous parà metres per fer memòria cau.
Important les teves llistes de memòria cau han de ser seqüencials, perquè una vegada faci matx amb la primera en què coincideixi amb l'objecte no seguirà llegint els teus altres regles
Les expressions regulars diferencien majúscula de minúscules, per tant no és el mateix flv que FLV però pots evitar això si aixà ho desitges usant l'opció -i . Aleshores quedaria aixà refresh_pattern -i
'Min': és el temps (minuts) en què un objecte serà considerat com a «recent o fresc» i si no té alguna etiqueta explicita d'«expirat». Per defecte squid recomana que sigui 0, per qüestions que algunes aplicacions dinà miques poden comportar-se estrany, pur blah blah blah, realment aquest valor ha de ser un nombre que tu consideris útil i efectiu per als elements que desitges fer memòria cau, exemple: jpg, 1440 minuts (un dia) em sembla bé, no és com que si en una pà gina canvien les.
'Percent' és el percentatge que de l'edat d'un objecte (des de la darrera modificació) serà considerat «recent o fresc». T'explico, potser fent un reload o refresh constant per veure les últimes modificacions que es van fer en una pà gina web, squid podria considerar si ja té diguem un 50% del temps complert entre min i max , tornar a descarregar aquest objecte d'internet i donar-te una còpia nova.
'Max' és el lÃmit per sobre o igual que 'Min' que tant de temps un objecte és considerat «recent o fresc», suposem que una imatge d'alguna pà gina només va ser consultada una vegada per un usuari, aquest objecte ja va complir el seu temps min , però no el max , llavors quan sigui consultat novament, es lliurés una còpia de memòria cau.
Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale
Aquestes opcions es van fer majorità riament per ignorar comportaments preestablerts en llenguatges i protocols, per aixà garantir l'ús efectiu de la memòria cau.
override-expire
Reforça el temps mÃnim d'un objecte, tot i que el servidor vaig enviar un temps d'expirar menor (exemple coses com header o Cache-Control: max-age). Si fem això sortirà un «revisió de resultats» dient coses com aquesta «VIOLATES the HTTP standard» però això és només advertències que podem ignorar. Ara si el temps que envia un servidor és més gran llavors squid prengués el temps (de venciment) de servidor
override-lastmod
Reforça el temps mÃnim d'un objecte, encara que aquest objecte hagi estat modificat recentment.
reload-into-ims
La explicació curta, és que evita que quan premem el botó de refrescar o fem una petició no-cache, squid lliurés memòria cau si no ha estat «modificat des» i / o si no hi ha algun «headers» a la pà gina
ignore-reload
Ignora l'acció dels usuaris de pressionar el botó de recarregar o refrescar pà gina
ignore-no-store
IIgnora qualsevol regla en «headers» de no fer memòria cau, per exemple de vÃdeos
ignore-private
Ignora qualsevol regla en «headers» de contingut privat que no s'ha de fer memòria cau, exemple: contingut de facebook.
refresh-ims
Squid contacta amb el servidor, per garantir si l'objecte és el més nou. Si ho és llavors lliurés memòria cau
store-stale
Squid guardés totes aquestes respostes, encara que no tenen data de caducitat, això és molt poc prà ctic a causa que usualment no poden ser reutilitzades. Si decideixes habilitar-has de declarar max-stale = NN
max-stale=NN
Si habilitaste l'anterior, has de declarar un temps mà xim de vida per a aquesta resposta o factor. Squid no lliurament objectes d'aquest estil sinó el pot validar amb la font
Aquà els deixo una taula de com funciona l'estat de fresc «FRESH» segons els valors que hem parlat:
- FRESH if expiri> now, else Stale
- Stale if age> max
- FRESH if lm-factor <percent, else Stale
- FRESH if age <min else stale
Aquà una configuració d'exemple per a una empresa en especÃfic amb molt d'espai en disc, bons equips i bon ample de banda
refresh_pattern -i \.(3gp|7z|ace|asx|bin|deb|divx|dvr-ms|ram|rpm|exe|inc|cab|qt)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(rar|jar|gz|tgz|bz2|iso|m1v|m2(v|p)|mo(d|v)|arj|lha|lzh|zip|tar)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(jp(e?g|e|2)|gif|pn[pg]|bm?|tiff?|ico|swf|dat|ad|txt|dll)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(avi|ac4|mp(e?g|a|e|1|2|3|4)|mk(a|v)|ms(i|u|p)|og(x|v|a|g)|rm|r(a|p)m|snd|vob)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
refresh_pattern -i \.(pp(t?x)|s|t)|pdf|rtf|wax|wm(a|v)|wmx|wpl|cb(r|z|t)|xl(s?x)|do(c?x)|flv|x-flv)$ 43200 99% 43200 ignore-no-store ignore-must-revalidate override-expire override-lastmod reload-into-ims
cache_mem 8092 MB
Ara el cache no és només en disc dur, també podem fer cache en memòria ram, aquest valor és per cada procés squid, aixà que has de prendre'l en consideració quan uses redirectors com squidGuard
maximum_object_size_in_memory 1024 KB
La mida mà xima de l'objecte en memòria que squid emmagatzemés en RAM. També pots declarar un mÃnim.
memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF
Com veuen un és la polÃtica per al reemplaçament de memòria cau en memòria RAM i una altra en disc dur. Existeixen 2 polÃtiques GDSF i LFUDA. La primera busca millorar el percentatge d'encerts de memòria cau, tenint molts objectes petits a la mà , el segon busca el contrari, el manté objectes en memòria cau sense importar la seva mida.
La pregunta que m'imagino que m'estàs fent en aquest moment és Quin ús ?, bé si el teu consideres que en el teu entorn fan moltes consultes i poques descà rregues fa servir GDSF si per contra fan moltes descà rregues i poques consultes LFUDA. Això si et recomano LFUDA quan vas a fer, no sé, cau en 1TB de disc, és mes eficient.
maximum_object_size 4 MB
La mida mà xima que pot tenir un objecte per a ser emmagatzemat
cache_dir aufs /media/proxy249/cache 100 16 256
On estarà emmagatzemat la memòria cau, atenció aquÃ, important és si fas servir ufs, aufs o diskd, els 3 funcionen més o menys igual, la diferències aquesta és que aufs i diskd treballen amb processos separats per fer les operacions I / O en disc dur i evitar que els processos de squid es quedin penjats durant aquestes operacions, addicionalment diskd pots especificar la quantitat de fils que vas a disposar per a aquesta tasca. Jo recomano aufs si tens un bon equip.
Mida 100 (megues), pots col·locar 100000 són gairebé 100 GB depèn de la teva disponibilitat. 16 és el nombre de carpetes, i 256 és el nombre de sub-carpetes. Pots jugar amb els dos valors depèn que tan rà pid siguin els teus discos i que tant recursos tens.
cache_swap_low 90
cache_swap_high 95
Aquestes opcions són els valors de reemplaçament d'objectes, és el valor mÃnim i mà xim com a marca d'aigua segons squid, on aquests números són en percentatge (%), i en memòria cau molt petits un 5% com aquesta ara mateix serien diguem 300 objectes per segons , però en caches molt grans estarÃem parlant de milers de MB
Bé aquà els deixo, això per ara, comentin i també prengui en consideració aquells que em deien que no podien fer memòria cau i filtratge de pagines https (SSL) en squid 3.5 o superior, els hi portaré aviat, romanguin atents a aquest bloc.