Squid nie je len služba proxy a cache, dokáže oveľa viac: spravuje ACL (zoznamy prístupov), filtruje obsah, dokonca dokáže filtrovať SSL aj v priehľadnom režime (metóda proxy - bez nutnosti konfigurácie v nastaveniach proxy servera. z ich prehliadačov je to ako človek v strede, nikto nevie, že to tam je). Často teda vidím, ako sa míňa celý potenciál tejto aplikácie tým, že neviem, ako nakonfigurovať jednotlivé jej časti.
Teraz je zaujímavá vec, ktorú squid robí (podľa môjho názoru) cache. Poviete mi, prečo cache? Dôvod je jednoduchý, hlavná vec je lepšie spravovať využitie svojej rýchlosti a šírky pásma. Dobre si premyslite, 1000 5 ľudí vo vašej spoločnosti, ktorí každých XNUMX minút konzultujú, bežné stránky, Google, Hotmail, Gmail atď., Takže budete opakovane sťahovať obrázky, bannery, reklamu, html obsah, všetko sú to statické veci, nie. menia sa tak často, lepšie je mať ich uložené v miestnej sieti a vy doručíte kópiu, ktorú považujete za poslednú v rámci konfigurácií, ktoré ste zvážili.
Ako na to? Jednoduché s nasledujúcou vetou:
refresh_pattern [-i] regex min percent max [options]
Ako vždy hovorím, neverte všetkému, preto vás povzbudzujem, aby ste si prečítali informácie z oficiálneho zdroja. Odporúčam prečítať si manuál k tomuto rozhodnutiu TU.
Príkaz refresh_pattern bude vždy naším tagom na pridávanie nových parametrov do vyrovnávacej pamäte.
Je dôležité, aby vaše zoznamy cache boli postupné, pretože akonáhle sa zhoduje s prvým, ktorý sa zhoduje s objektom, nebude pokračovať v čítaní vašich ďalších pravidiel
Regulárne výrazy rozlišujú malé a veľké písmená, takže flv nie je to isté ako FLV, ale tomu sa môžete vyhnúť použitím voľby -i . Potom by to vyzeralo takto: refresh_pattern -i
„Min“: Toto je čas (v minútach), počas ktorého bude objekt považovaný za „nový“, ak nemá explicitný tag „expired“ (platnosť vypršala). Squid štandardne odporúča 0, pretože niektoré dynamické aplikácie sa môžu správať zvláštne. Táto hodnota by mala byť číslo, ktoré považujete za užitočné a efektívne pre prvky, ktoré chcete ukladať do vyrovnávacej pamäte. Napríklad 1440 minút (jeden deň) sa mi zdá v poriadku pre JPG; nie je to tak, že obrázky v príspevku na webovej stránke sa menia každých 5 minút.
„Percento“ je percento veku objektu (od poslednej úpravy), ktoré sa bude považovať za „nedávne“ alebo „čerstvé“. Napríklad, ak neustále načítavate alebo obnovujete webovú stránku, aby ste videli najnovšie úpravy, Squid by mohol brať do úvahy, že ak objekt dosiahol napríklad 50 % času medzi minimálnou a maximálnou hodnotou , znova si stiahne tento objekt z internetu a poskytne vám novú kópiu.
„Max“ je limit nad alebo rovný „Min“ , počas ktorého sa objekt považuje za „nedávny alebo čerstvý“. Predpokladajme, že obrázok na stránke si používateľ pozrel iba raz; tento objekt už dosiahol svoj minimálny čas , ale nie maximálny čas . Takže pri opätovnom zobrazení sa doručí kópia z vyrovnávacej pamäte.
Options:
override-expire
override-lastmod
reload-into-ims
ignore-reload
ignore-no-store
ignore-private
max-stale=NN
refresh-ims
store-stale
Tieto možnosti boli urobené väčšinou kvôli ignorovaniu vopred nastaveného správania v jazykoch a protokoloch, aby sa zaručilo efektívne využitie medzipamäte.
override-expire
Vynucuje minimálny čas objektu, a to aj v prípade, že server poslal kratší čas vypršania platnosti (napríklad veci ako hlavička alebo Cache-Control: max-age). Ak to urobíme, zobrazí sa „varovanie“, ktoré bude hovoriť napríklad „PORUŠUJE štandard HTTP“, ale sú to iba varovania, ktoré môžeme ignorovať. Teraz, ak je čas, ktorý server pošle, dlhší, potom chobotnica zaberie čas (expiráciu) servera
override-lastmod
Posilňuje minimálny čas položky, aj keď bola položka nedávno upravená.
reload-into-ims
Krátke vysvetlenie spočíva v tom, že zabráni tomu, že keď stlačíme tlačidlo obnovenia alebo vykonáme požiadavku bez vyrovnávacej pamäte, squid doručí vyrovnávaciu pamäť, ak od tej doby nebola „upravená“ alebo ak na stránke nie sú „hlavičky“.
ignore-reload
Ignorujte činnosť používateľov pri stlačení tlačidla znovu načítať alebo obnoviť stránku
ignore-no-store
Ignorujte akékoľvek pravidlo v hlavičkách, ktoré nemá ukladať do medzipamäte, napríklad videá
ignore-private
Ignorujte všetky pravidlá v hlavičkách súkromného obsahu, ktoré by sa nemali ukladať do medzipamäte, napríklad: obsah facebooku.
refresh-ims
Squid kontaktuje server, aby zaručil, že je objekt najnovší. Ak je, potom doručí vyrovnávaciu pamäť
store-stale
Squid všetky tieto odpovede uloží, aj keď nemajú dátum vypršania platnosti, je to veľmi nepraktické, pretože sa zvyčajne nedajú znova použiť. Ak sa ho rozhodnete povoliť, musíte deklarovať max-stale = NN
max-stale=NN
Ak ste povolili vyššie uvedené, musíte pre uvedenú odpoveď alebo faktor deklarovať maximálnu životnosť. Squid nedodáva objekty tohto štýlu, ale môže ho overiť pomocou zdroja
Tu je tabuľka toho, ako stav čerstvého „FRESH“ funguje podľa hodnôt, o ktorých sme diskutovali:
- ČERSTVÉ, ak vyprší platnosť> teraz, inak STALE
- OBCHOD, ak vek> max
- FRESH if lm-factor <percent, else STALE
- ČERSTVÉ, ak vek <min. Iný STALE
Tu je príklad konfigurácie pre konkrétnu spoločnosť s veľkým priestorom na disku, dobrým vybavením a dobrou šírkou pásma
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
Ukladanie do vyrovnávacej pamäte sa teraz nedeje len na pevnom disku, ale aj v pamäti RAM. Táto hodnota je pre každý proces Squid, takže by ste ju mali zohľadniť pri používaní presmerovačov, ako je SquidGuard.
maximum_object_size_in_memory 1024 KB
Maximálna veľkosť objektu v pamäti, ktorú chobotnica uloží do RAM. Môžete tiež deklarovať minimum.
memory_replacement_policy heap GDSF
cache_replacement_policy heap GDSF
Ako vidíte, jednou z nich je politika výmeny medzipamäte v pamäti RAM a druhou v prípade pevného disku. Existujú 2 pravidlá GDSF a LFUDA. Prvý sa snaží zlepšiť percento zásahov do vyrovnávacej pamäte, keď má po ruke veľa malých objektov, druhý sa snaží o pravý opak, udržuje objekty v vyrovnávacej pamäti bez ohľadu na ich veľkosť.
Otázka, ktorú si myslím, že sa ma v tejto chvíli pýtate, je, aké použitie mám použiť? No, ak vezmete do úvahy, že vo vašom prostredí robia veľa dotazov a málo súborov na stiahnutie používa GDSF, ak naopak veľa sťahuje a málo dotazov LFUDA. Že ak odporúčam LFUDA, keď sa chystáte robiť, neviem, cache do 1TB disku, je to efektívnejšie.
maximum_object_size 4 MB
Maximálna veľkosť, ktorú musí byť objekt možné uložiť
cache_dir aufs /media/proxy249/cache 100 16 256
Tam, kde bude uložená vyrovnávacia pamäť, tu treba venovať pozornosť, je dôležité, ak používate ufs, aufs alebo diskd, všetky 3 pracujú viacmenej rovnako, rozdiel je v tom, že aufs a diskd pracujú so samostatnými procesmi, aby vykonávali I / O operácie na pevnom disku a zabráňte tomu, aby procesy chobotnice viseli počas týchto operácií, navyše diskd môžete určiť počet vlákien, ktoré budete mať pre túto úlohu. Odporúčam aufs, ak máte dobrý tím.
Veľkosť 100 (megabajtov), môžete dať 100000, je takmer 100 GB, závisí od vašej dostupnosti. 16 je počet priečinkov a 256 je počet podpriečinkov. Môžete hrať s oboma hodnotami, čo závisí od toho, ako rýchle sú vaše disky a koľko máte zdrojov.
cache_swap_low 90
cache_swap_high 95
Tieto možnosti sú hodnoty nahradenia objektu, ide o minimálnu a maximálnu hodnotu ako vodoznak podľa squidu, kde sú tieto čísla v percentách (%) a vo veľmi malej medzipamäti by teraz bolo 5% povedzme 300 objektov za sekundu. , ale vo veľmi veľkých keškách by sme hovorili o tisícoch MB
To je zatiaľ všetko. Komentujte a berte do úvahy aj tých, ktorí mi povedali, že v Squide 3.5 alebo novšom nemôžu ukladať do vyrovnávacej pamäte a filtrovať stránky HTTPS (SSL); čoskoro vám to prinesiem, takže zostaňte naladení na tento blog.