Konfigurace Dispečera
POZNÁMKA
Verze dispečerů jsou nezávislé na AEM. Na tuto stránku jste mohli být přesměrováni, pokud jste použili odkaz na dokumentaci Dispatcher, která je součástí dokumentace k předchozí verzi AEM.
Následující části popisují, jak nakonfigurovat různé aspekty Dispečera.
Všechny prvky AEM a Dispatcher lze nainstalovat do sítí IPv4 i IPv6. Viz IPV4 a IPV6.
Ve výchozím nastavení je konfigurace dispečera uložena v textovém souboru dispatcher.any, i když během instalace můžete změnit název a umístění tohoto souboru.
Konfigurační soubor obsahuje řadu jednohodnotových nebo vícehodnotových vlastností, které řídí chování Dispatcher:
Názvy vlastností mají předponu lomítko /.Vlastnosti s více hodnotami uzavírají podřízené položky pomocí složených závorek { }.Příklad konfigurace je strukturován takto:
# jméno dispečera/jméno "internet-server"# každá farma konfiguruje off (vyvážené zatížení) rendery/farmy {# první záznam farmy (štítek není důležitý, jen pro vaše pohodlí) /webové stránky { /clientheaders { # Seznam hlavičky, které se předávají } /virtualhosts { # Seznam adres URL pro tento web } /sessionmanagement { # nastavení pro ověření uživatele } /renders { # Seznam instancí AEM, které vykreslují dokumenty } /filter { # Seznam filtrů } /vanity_urls { # List of vanity URLs } /cache { # Cache configuration /rules { # List of cachable documents } /invalidate { # List of auto-invalidated documents } } /statistics { /categories { # Kategorie dokumentů, které se používají pro vyrovnávání zatížení odhady } } /stickyConnectionsFor "/myFolder" /health_check { # Stránka bude kontaktována, když instance vrátí 500 } /retryDelay "1" /numberOfRetries "5" /unavailablePenalta "1" /failover "1" } }Můžete zahrnout další soubory, které přispívají ke konfiguraci:
Pokud je váš konfigurační soubor velký, můžete jej rozdělit na několik menších souborů (které se snáze spravují), pak je zahrňte. Chcete-li zahrnout soubory, které se generují automaticky.Například k zahrnutí souboru myFarm.any do /farm konfigurace použijte následující kód:
/farms{$include "myFarm.any"}Použijte hvězdičku (*) jako zástupný znak k určení rozsahu souborů, které chcete zahrnout.
Pokud například soubory farm_1.any až farm_5.any obsahují konfiguraci farem jedna až pět, můžete je zahrnout následovně:
/farms{$include "farm_*.any"}Místo pevného kódování hodnot můžete použít proměnné prostředí ve vlastnostech s hodnotou řetězce v souboru dispatcher.any. Chcete-li zahrnout hodnotu proměnné prostředí, použijte formát ${název_proměnné}.
Pokud je například soubor dispatcher.any umístěn ve stejném adresáři jako adresář mezipaměti, lze pro vlastnost docroot použít následující hodnotu:
/docroot "${PWD}/cache"Jako další příklad, pokud vytvoříte proměnnou prostředí s názvem PUBLISH_IP, která ukládá název hostitele instance publikování AEM, lze použít následující konfiguraci vlastnosti /renders:
/renders {/0001 {/hostname "${PUBLISH_IP}"/port "8443"}}Použijte vlastnost /name k zadání jedinečného názvu k identifikaci vaší instance Dispatcher . Vlastnost /name je vlastnost nejvyšší úrovně v konfigurační struktuře.
Vlastnost /farms definuje jednu nebo více sad chování dispečera, kde každá sada je spojena s různými webovými stránkami nebo URL. Vlastnost /farms může zahrnovat jednu farmu nebo více farem:
Pokud chcete, aby Dispečer obsluhoval všechny vaše webové stránky nebo weby stejným způsobem, použijte jednu farmu. Vytvořte více farem, když různé oblasti vašeho webu nebo různé webové stránky vyžadují různé chování Dispečera.Vlastnost /farms je vlastnost nejvyšší úrovně ve struktuře konfigurace. Chcete-li definovat farmu, přidejte podřízenou vlastnost do vlastnosti /farms. Použijte název vlastnosti, který jednoznačně identifikuje farmu v rámci instance Dispatcher.
Vlastnost /farmname má více hodnot a obsahuje další vlastnosti, které definují chování dispečera:
Adresy URL stránek, na které se farma vztahuje. Jedna nebo více adres URL služeb (obvykle instancí publikování AEM), které se mají použít pro vykreslování dokumentů. Statistiky, které se mají použít pro vyrovnávání zatížení více modulů vykreslování dokumentů. Několik dalších chování, například které soubory cache a where.Hodnota může obsahovat libovolný alfanumerický (a-z, 0-9) znak. Následující příklad ukazuje definici kostry pro dvě farmy s názvem /daycom a /docsdaycom:
#name of dispatcher/name "day sites"#farms sekce definuje seznam farem nebo lokalit/farem{ /daycom { ... } /docdaycom {... }}POZNÁMKA
Pokud používáte více než jednu vykreslovací farmu, seznam se vyhodnocuje zdola nahoru. To je zvláště důležité při definování virtuálních hostitelů pro vaše webové stránky.
Každá farma může obsahovat následující podřízené vlastnosti:
UPOZORNĚNÍ
Parametr /homepage (pouze IIS) již nefunguje. Místo toho byste měli použít modul IIS URL Rewrite Module.
Pokud používáte Apache, měli byste použít modul mod_rewrite. Informace o mod_rewrite naleznete v dokumentaci k webu Apache (například Apache 2.4). Při použití mod_rewrite je vhodné použít příznak ‚passthrough|PT‘ (pass through to next handler), aby přepisovací stroj nastavil pole uri interní struktury request_rec na hodnotu pole názvu souboru.
Vlastnost /clientheaders definuje seznam hlaviček HTTP, které Dispečer předá z klientského požadavku HTTP vykreslovacímu modulu (instance AEM).
Ve výchozím nastavení Dispatcher předává standardní hlavičky HTTP do instance AEM. V některých případech můžete chtít přeposlat další záhlaví nebo odebrat konkrétní záhlaví:
Přidejte záhlaví, jako jsou vlastní záhlaví, která vaše instance AEM očekává v požadavku HTTP. Odeberte záhlaví, jako jsou autentizační záhlaví, která jsou relevantní pouze pro webový server.Pokud upravíte sadu záhlaví, která mají procházet, musí specifikovat vyčerpávající seznam hlaviček, včetně těch, která jsou běžně zahrnuta ve výchozím nastavení.
Například instance Dispatcher, která zpracovává požadavky na aktivaci stránky pro instance publikování, vyžaduje záhlaví PATH v sekci /clientheaders. Hlavička PATH umožňuje komunikaci mezi agentem replikace a dispečerem.
Následující kód je příklad konfigurace pro /clientheaders:
/clientheaders{"CSRF-Token""X-Forwarded-Proto""referer""user-agent""autorization""from""content-type""content-length""accept-charset""accept-encoding"" accept-language""accept""host""if-match""if-none-match""if-range""if-unmodified-since""max-forwards""proxy-authorization""proxy-connection"" rozsah""cookie""cq-action""cq-handle""handle""action""cqstats""hloubka""přeložit""vyprší""datum""dav""ms-author-via""if"" lock-token""x-expected-entity-length""destination""PATH"}Vlastnost /virtualhosts definuje seznam všech kombinací názvu hostitele/URI, které Dispečer přijímá pro tato farma. Jako zástupný znak můžete použít hvězdičku (*). Hodnoty pro vlastnost / virtualhosts používají následující formát:
[schéma]hostitel[uri][*]Následující příklad konfigurace zpracovává požadavky pro domény .com a .ch méSpolečnosti a všechny domény mySubDivision:
/virtualhosts{"www.myCompany.com""www.myCompany.ch""www.mySubDivison.*"}Všechny požadavky zpracovává následující konfigurace:
/virtualhosts{"*"}Když Dispečer obdrží požadavek HTTP nebo HTTPS, najde hodnotu virtuálního hostitele, která nejlépe odpovídá hlavičkám hostitele, uri a schématu žádost. Dispečer vyhodnotí hodnoty ve vlastnostech virtualhosts v následujícím pořadí:
Dispečer začíná na nejnižší farmě a postupuje směrem nahoru v souboru dispatcher.any. Pro každou farmu začíná Dispatcher nejvyšší hodnotou ve vlastnosti virtualhosts a postupuje dolů v seznamu hodnot.Dispečer najde nejvhodnější hodnotu virtuálního hostitele následujícím způsobem:
Použije se první virtuální hostitel, který odpovídá všem třem hostitelům, schématu a uri požadavku. Pokud žádné hodnoty virtualhosts nemají části schématu a uri, které odpovídají schématu i uri požadavku, použije se virtuální hostitel, který odpovídá hostiteli požadavku. Pokud žádné hodnoty virtualhosts nemají hostitelskou část, která odpovídá hostiteli požadavku, použije se nejvyšší virtuální hostitel z nejvyšší farmy.Proto byste měli umístit výchozí virtuální host v horní části vlastnosti virtualhosts v nejvyšší farmě vašeho souboru dispatcher.any.
Následující příklad představuje úryvek ze souboru dispatcher.any, který definuje dvě farmy Dispatcher a každá farma definuje vlastnost virtualhosts.
/farmy{/myProdukty{/virtualhosts{"www.mycompany.com"}/renders{/hostname "server1.myCompany.com"/port "80"}}/myCompany{/virtualhosts{"www.mycompany.com/products /*"}/renders{/hostname "server2.myCompany.com"/port "80"}}}V tomto příkladu ukazuje následující tabulka virtuální hostitele, které jsou vyřešeny pro dané požadavky HTTP:
Požadavek URLVyřešený virtuální hostitelhttps://www.mycompany.com/products/gloves.htmlwww.mycompany.com/products/https://www.mycompany.com/about.htmlwww.mycompany.comPOZOR
Aby bylo možné tuto funkci povolit, musí být/allowAuthorized v sekci /cache nastaveno na "0".
Vytvořte zabezpečenou relaci pro přístup k vykreslovací farmě, aby se uživatelé pro přístup k jakékoli stránce ve farmě museli přihlásit. Po přihlášení mají uživatelé přístup na stránky ve farmě. Informace o použití této funkce s CUG naleznete v části Vytvoření uzavřené skupiny uživatelů. Před spuštěním si také prohlédněte Kontrolní seznam zabezpečení dispečera.
Vlastnost /sessionmanagement je podvlastností /farms.
POZOR
Pokud části vašeho webu používají různé požadavky na přístup, musíte definovat více farem.
/sessionmanagement má několik dílčích parametrů:
/adresář (povinné)
Adresář, ve kterém jsou uloženy informace o relaci. Pokud adresář neexistuje, je vytvořen.
POZOR
Při konfiguraci dílčího parametru adresáře neukazujte na kořenovou složku (/adresář "/"), protože to může způsobit vážné problémy. Vždy byste měli zadat cestu ke složce, ve které jsou uloženy informace o relaci. Například:
/sessionmanagement{/directory "/usr/local/apache/.sessions"}/encode (volitelné)
Jak jsou kódovány informace o relaci. Použijte md5 pro šifrování pomocí algoritmu md5 nebo hex pro hexadecimální kódování. Pokud zašifrujete data relace, uživatel s přístupem k systému souborů nemůže číst obsah relace. Výchozí je md5.
/header (volitelné)
Název hlavičky HTTP nebo souboru cookie, ve kterém jsou uloženy informace o autorizaci. Pokud informace ukládáte do hlavičky http, použijte HTTP:. Chcete-li uložit informace do souboru cookie, použijte Cookie:. Pokud nezadáte hodnotu HTTP: použije se autorizace.
/timeout (volitelné)
Počet sekund do vypršení časového limitu relace po jejím posledním použití. Pokud není uvedeno, použije se „800“, takže časový limit relace vyprší o něco více než 13 minut po posledním požadavku uživatele.
Příklad konfigurace vypadá takto:
/sessionmanagement{/directory "/usr/local/apache/.sessions"/encode "md5"/header "HTTP:autorization"/timeout "800"}Přepínač /renders vlastnost definuje URL, na kterou Dispečer posílá požadavky na vykreslení dokumentu. Následující příklad /render sekce identifikuje jednu instanci AEM pro vykreslování:
/renders{/myRenderer{# název hostitele nebo IP vykreslovacího modulu/název hostitele "aem.myCompany.com"# port rendereru/port "4503"# časový limit připojení v milisekundách, "0" (výchozí) čeká neomezeně dlouho/timeout "0" "}}Následující příklad / vykresluje část identifikuje instanci AEM, která běží na stejném počítači jako dispečer:
/renders{/myRenderer { /hostname "127.0.0.1" /port "4503" }}Následující příklad /renders rozděluje požadavky na render rovnoměrně mezi dvě instance AEM:
/renders{/myFirstRenderer{/hostname "aem.myCompany.com"/port "4503"}/mySecondRenderer{/hostname "127.0.0.1"/port "4503"}}/Časový limit
Určuje časový limit připojení pro přístup k instanci AEM v milisekundách. Výchozí hodnota je "0", což způsobí, že Dispečer bude čekat neomezeně dlouho.
/receiveTimeout
Udává čas v milisekundách, po který může odpověď trvat. Výchozí hodnota je „600000“, což způsobí, že Dispečer bude čekat 10 minut. Nastavení "0" zcela eliminuje časový limit.
Pokud při analýze záhlaví odpovědí dojde k vypršení časového limitu, vrátí se stav HTTP 504 (Bad Gateway). Pokud při čtení těla odpovědi dojde k vypršení časového limitu, vrátí Dispečer klientovi neúplnou odpověď, ale odstraní všechny soubory mezipaměti, které mohly být zapsány.
/ipv4
Uvádí, zda Dispatcher používá funkci getaddrinfo (pro IPv6) nebo funkci gethostbyname (pro IPv4) k získání IP adresy vykreslení. Hodnota 0 způsobí použití getaddrinfo. Hodnota 1 způsobí použití gethostbyname. Výchozí hodnota je 0.
Funkce getaddrinfo vrací seznam IP adres. Dispečer iteruje seznam adres, dokud nenaváže spojení TCP/IP. Proto je vlastnost ipv4 důležitá, když je název hostitele vykreslení spojen s více IP adresami a hostitel v reakci na funkci getaddrinfo vrátí seznam IP adres, které jsou vždy ve stejném pořadí. V této situaci byste měli použít funkci gethostbyname, aby byla IP adresa, se kterou se Dispatcher spojuje, náhodná.
Amazon Elastic Load Balancing (ELB) je taková služba, která odpovídá na getaddrinfo seznamem IP adres s potenciálně stejným pořadím.
/secure
Pokud má vlastnost /secure hodnotu "1", použije Dispatcher HTTPS ke komunikaci s instancí AEM. Další podrobnosti najdete také v části Konfigurace dispečera pro použití SSL.
/vždy-vyřešit
S Dispatcherem verze 4.1.6 můžete nakonfigurovat vlastnost /always-resolve následovně:
Když je nastaveno na "1", vyhodnotí název hostitele při každém požadavku (dispečer nikdy neuloží žádnou IP adresu do mezipaměti). Může dojít k mírnému dopadu na výkon kvůli dodatečnému volání potřebnému k získání informací o hostiteli pro každý požadavek. Pokud vlastnost není nastavena, bude IP adresa ve výchozím nastavení uložena do mezipaměti.Tuto vlastnost lze také použít v případě narazíte na problémy s dynamickým rozlišením IP, jak ukazuje následující příklad:
/renders {/0001 { /hostname "název-hostitele-zde" /port "4502" /ipv4 "1" /always-resolve "1" }}Použijte /filter k určení požadavků HTTP, které Dispečer přijímá. Všechny ostatní požadavky jsou odeslány zpět na webový server s kódem chyby 404 (stránka nenalezena). Pokud žádná sekce /filter neexistuje, budou všechny požadavky přijaty.
Poznámka: Požadavky na statfile jsou vždy zamítnuty.
Sekce /filter se skládá ze série pravidel, která buď zakazují nebo povolují přístup k obsahu podle vzorů v části požadavku HTTP požadavku. Pro sekci /filter byste měli použít strategii seznamu povolených:
Nejprve odepřete přístup ke všemu. Podle potřeby povolte přístup k obsahu.Každá položka v sekci /filter obsahuje typ a vzor, který odpovídá konkrétnímu prvku požadavku řádek nebo celý řádek požadavku. Každý filtr může obsahovat následující položky:
Typ: /type označuje, zda povolit nebo zakázat přístup pro požadavky, které odpovídají vzoru. Hodnota může být buď povolit nebo zakázat.
Prvek řádku požadavku: Zahrňte /method, /url, /query nebo /protocol a vzor pro filtrování požadavků podle těchto specifických částí části požadavku HTTP požadavku. Upřednostňovanou metodou filtrování je filtrování prvků řádku požadavku (spíše než celého řádku požadavku).
Pokročilé prvky řádku požadavků: Počínaje verzí Dispatcher 4.2.0 jsou k dispozici čtyři nové prvky filtru. Tyto nové prvky jsou /path, /selectors, /extension a /suffix. Zahrnutím jedné nebo více těchto položek můžete dále ovládat vzory adres URL.
POZNÁMKA
Další informace o tom, na kterou část řádku požadavku každý z těchto prvků odkazuje, naleznete na wiki stránce Sling URL Decomposition.
Vlastnost glob: Vlastnost /glob se používá ke shodě s celým řádkem požadavku HTTP požadavku.POZOR
Filtrování pomocí globů je v Dispatcheru zastaralé. Proto byste se měli vyvarovat používání globů v sekcích /filter, protože to může vést k bezpečnostním problémům. Takže místo:
/glob "* *.css *"
měli byste použít
/url "*.css"
Část požadavku HTTP požadavkůHTTP/1.1 definuje řádek požadavku následovně:
Verze HTTP požadavku na URI metody
Znaky představují návrat vozíku následovaný posunem řádku. Následující příklad je řádek požadavku, který je přijat, když klient požádá o americko-anglickou stránku webu WKND:
ZÍSKEJTE /content/wknd/us/en.html HTTP.1.1
Vaše vzory musí brát v úvahu mezery v řádku požadavku a znaky.
Dvojité uvozovky vs jednoduché uvozovkyPři vytváření pravidel filtrování použijte pro jednoduché vzory dvojité uvozovky „vzor“. Pokud používáte Dispatcher 4.2.0 nebo novější a váš vzor obsahuje regulární výraz, musíte vzor regulárního výrazu '(vzor1|vzor2)' uzavřít do jednoduchých uvozovek.
Regulární výrazyVe verzích Dispatcher novějších než 4.2.0 můžete do vzorů filtrů zahrnout rozšířené regulární výrazy POSIX.
Odstraňování problémů s filtryPokud se vaše filtry nespouštějí tak, jak byste očekávali, povolte protokolování trasování na dispečerovi, abyste viděli, který filtr zachycuje požadavek.
Příklad filtru: Odepřít všeNásledující ukázková část filtru způsobí, že Dispečer zamítne požadavky na všechny soubory. Měli byste odepřít přístup ke všem souborům a poté povolit přístup do konkrétních oblastí.
/0001{ /glob "*" /type "deny" }Požadavky na explicitně zamítnutou oblast vedou k vrácení kódu chyby 404 (stránka nenalezena).
Příklad filtru: Odepřít přístup ke konkrétním oblastemFiltry také umožňují zakázat přístup k různým prvkům, například stránkám ASP a citlivým oblastem v rámci instance publikování. Následující filtr odepře přístup ke stránkám ASP:
/0002{ /type "deny" /url "*.asp"}Ukázkový filtr: Povolit požadavky POSTNásledující vzorový filtr umožňuje odesílání dat formuláře metodou POST:
/filter {/0001{ /glob "*" /type "deny" }/0002 { /type "allow" /metoda "POST" /url "/content/[.]*.form.html" }}Příklad filtru: Povolit přístup ke konzole pracovního postupuNásledující příklad ukazuje filtr používaný k odepření externího přístupu ke konzole pracovního postupu:
/filter {/0001{ /glob "*" /type "deny" }/0002{/type "allow"/url "/libs/cq/workflow/content/console*"}}Pokud vaše instance publikování používá kontext webové aplikace (například publikovat), lze jej také přidat do definice filtru.
/0003 { /type "deny"/url "/publish/libs/cq/workflow/content/console/archive*"}Pokud stále potřebujete přístup k jednotlivým stránkám v omezené oblasti, můžete k nim povolit přístup . Chcete-li například povolit přístup na kartu Archiv v konzole Workflow, přidejte následující část:
/0004{ /type "allow"/url "/libs/cq/workflow/content/console/archive*" }POZNÁMKA
Když se na požadavek vztahuje více vzorů filtrů, je účinný poslední vzor filtru, který se použije.
Příklad filtru: Použití regulárních výrazůTento filtr povoluje rozšíření v adresářích s neveřejným obsahem pomocí regulárního výrazu, který je zde definován v jednoduchých uvozovkách:
/005{/type "allow" /extension '(css|gif|ico|js|png|swf|jpe?g)' }Ukázkový filtr: Filtrování dalších prvků adresy URL požadavkuNíže je příklad pravidla, který blokuje získávání obsahu z cesty /content a jejího podstromu pomocí filtrů pro cestu, selektory a rozšíření:
/006 {/type "deny"/path "/content/*"/selectors '(feed|rss|pages|languages|blueprint|infinity|tidy)'/extension '(json|xml|html)'}Při konfiguraci Dispečera byste měli co nejvíce omezit externí přístup. Následující příklad poskytuje minimální přístup pro externí návštěvníky:
Po vytvoření filtrů otestujte přístup na stránku, abyste se ujistili, že je vaše instance AEM zabezpečená.
Následující část /filter souboru dispatcher.any může být použita jako základ v konfiguračním souboru Dispatcher.
Tento příklad je založen na výchozím konfiguračním souboru, který je dodáván s Dispatcherem a je určen jako příklad pro použití v produkčním prostředí. Položky s předponou # jsou deaktivovány (komentovány), měli byste být opatrní, pokud se rozhodnete některou z nich aktivovat (odstraněním znaku # na daném řádku), protože to může mít dopad na bezpečnost.
Měli byste odepřít přístup ke všemu a poté povolit přístup ke konkrétním (omezeným) prvkům:
/filter{# Vše nejprve zakázat a poté povolit konkrétní položky/0001 { /type "deny" /glob "*" # Open consoles# /0011 { /type "allow" /url "/admin/*"}# allow servlet engine admin# /0012 { /type "allow" /url "/crx/*"}# allow content repository# /0013 { /type "allow" /url "/system/*" # allow OSGi console# Allow non- public content directories# /0021 { /type "allow" /url "/apps/*" # allow apps access# /0022 { /type "allow" /url "/bin/*"}/0023 { /type "allow" " /url "/content*" # deaktivovat toto pravidlo, aby byl povolen pouze mapovaný obsah# /0024 { /type "allow" /url "/libs/*" # /0025 { /type "deny"/url "/libs /shindig/proxy*" } # pokud povolíte /libs zavřít přístup k proxy# /0026 { /type "allow" /url "/home/*" # /0027 { /type "allow" /url "/tmp/ *"# /0028 { /type "allow" /url "/var/*"}# Povolit rozšíření v adresářích s neveřejným obsahem pomocí regulárního výrazu/0041{/type "allow"/extension '(css|gif |ico|js|png|swf|jpe?g)'}# Povolit funkce/0062 { /type "allow" /url "/libs/cq/personalization/*"}# povolit personalizaci# Odepřít získávání obsahu na všech přístupných stránky pomocí regulárních výrazů/0081{/type "deny"/selectors '((sys|doc)view|query|[0-9-]+)'/extension '(json|xml)'}# Odepřít obsah /content a jeho podstrom/0082{/type "deny"/cesta "/content/*"/selectors '(feed|rss|pages|languages|blueprint|infinity|tidy)'/extension '(json|xml|html) '# /0087 { /type "allow" /method "GET" /extension 'json' "*.1.json" # povolit jednoúrovňové požadavky json}POZNÁMKA
Filtry 0030 a 0031 týkající se Dynamic Media jsou použitelné pro AEM 6.0 a vyšší.
Pokud se rozhodnete rozšířit přístup, zvažte následující doporučení:
Externí přístup k /admin by měl být vždy zcela zakázán, pokud používáte CQ verze 5.4 nebo starší verze.
Při povolení přístupu k souborům v /libs je třeba postupovat opatrně. Přístup by měl být umožněn na individuálním základě.
Zakázat přístup ke konfiguraci replikace, aby ji nebylo možné vidět:
/etc/replication.xml*/etc/replication.infinity.json*Zakázat přístup k reverznímu proxy gadgetů Google:
V závislosti na vaší instalaci mohou být v adresáři /libs, /apps nebo jinde další zdroje, které je nutné zpřístupnit. Soubor access.log můžete použít jako jednu metodu určení zdrojů, ke kterým se přistupuje externě.
POZOR
Přístup ke konzolám a adresářům může představovat bezpečnostní riziko pro produkční prostředí. Pokud nemáte výslovné odůvodnění, měly by zůstat deaktivovány (zakomentovány).
Od verze Dispatcher 4.1.5 použijte k omezení řetězců dotazů sekci /filter. Důrazně se doporučuje explicitně povolit řetězce dotazů a vyloučit generické povolenky prostřednictvím prvků filtru povolení.
Jeden záznam může mít buď glob nebo nějakou kombinaci metody, adresy URL, dotazu a verze, ale ne obojí. Následující příklad povoluje řetězec dotazu a=* a zakazuje všechny ostatní řetězce dotazů pro adresy URL, které se překládají na uzel /etc:
/filter { /0001 { /type "deny" /metoda "POST" /url "/etc/*" } /0002 { /type "allow" /metoda "GET" /url "/etc/*" /query "a =*" }}POZNÁMKA
Pokud pravidlo obsahuje /query, bude odpovídat pouze požadavkům, které obsahují řetězec dotazu a odpovídají zadanému vzoru dotazu.
Pokud by ve výše uvedeném příkladu měly být povoleny i požadavky na /etc, které nemají řetězec dotazu, byla by vyžadována následující pravidla:
/filter {>/0001 { /type "deny" /metoda "*" /url "/cesta/*" }>/0002 { /type "allow" /metoda "GET" /url "/cesta/*" }>/0003 { /type „deny“ /metoda „GET“ /url „/cesta/*“ /query „*“ }>/0004 { /type „allow“ /metoda „GET“ /url „/cesta /*" /query "a=*" }}Filtry dispečerů by měly blokovat přístup k následujícím stránkám a skriptům v instancích publikování AEM. Pomocí webového prohlížeče se pokuste otevřít následující stránky jako návštěvník webu a ověřte, zda je vrácen kód 404. Pokud získáte jiný výsledek, upravte filtry.
Upozorňujeme, že byste měli vidět normální vykreslování stránky pro /content/add_valid_page.html?debug=layout.
/admin/system/console/dav/crx.default/crx/bin/crxde/logs/jcr:system/jcr:versionStorage.json/_jcr_system/_jcr_versionStorage.json/libs/wcm/core/content/siteadmin.html/libs /collab/core/content/admin.html/libs/cq/ui/content/dumplibs.html/var/linkchecker.html/etc/linkchecker.html/home/users/a/admin/profile.json/home/users /a/admin/profile.xml/libs/cq/core/content/login.json/content/../libs/foundation/components/text/text.jsp/content/.{.}/libs/foundation/components /text/text.jsp/apps/sling/config/org.apache.felix.webconsole.internal.servlet.OsgiManager.config/jcr%3acontent/jcr%3adata/libs/foundation/components/primary/cq/workflow/components /participants/json.GET.servlet/content.pages.json/content.languages.json/content.blueprint.json/content.-1.json/content.10.json/content.infinity.json/content.tidy. json/content.tidy.-1.blubber.json/content/dam.tidy.-100.json/content/content/geometrixx.sitemap.txt /content/add_valid_page.query.json?statement=//*/content/ add_valid_page.qu%65ry.js%6Fn?statement=//*/content/add_valid_page.query.json?statement=//*[@transportPassword]/(@transportPassword%20|%20@transportUri%20|%20@ transportUser)/content/add_valid_path_to_a_page/_jcr_content.json/content/add_valid_path_to_a_page/jcr:content.json/content/add_valid_path_to_a_page/_jcr_content.feed/content/adtentad_valid_page d_path_to_a_page/pagename._jcr_content.feed/content /add_valid_path_to_a_page/pagename.jcr:content.feed/content/add_valid_path_to_a_page/pagename.docview.xml/content/add_valid_path_to_a_page/pagename.docview.json/content/add_valid_path_to.conviewc.feed. /content.rss.xml/content.feed.html/content/add_valid_page.html?debug=layout/projects/tagging/etc/replication.html/etc/cloudservices.html/welcomeVydejte v terminálu následující příkaz nebo příkazový řádek k určení, zda je povolen anonymní přístup pro zápis. Neměli byste být schopni zapisovat data do uzlu.
curl -X POST "https://anonymní:anonymní@hostname:port/content/usergenerated/mytestnode"
Vydáním následujícího příkazu v terminálu nebo příkazovém řádku se pokuste zrušit platnost mezipaměti Dispatcher a ujistěte se, že obdržíte odpověď s kódem 404:
curl -H "CQ-Handle: /content" -H "CQ-Cesta: /content" https://yourhostname/dispatcher/invalidate.cache
Nakonfigurujte Dispatcher, abyste povolili přístup k praktickým adresám URL, které jsou nakonfigurovány pro vaše stránky AEM.
Když je povolen přístup k praktickým adresám URL, Dispečer pravidelně volá službu, která běží na instanci vykreslení, aby získal seznam praktických adres URL. Dispečer uloží tento seznam do místního souboru. Když je požadavek na stránku zamítnut kvůli filtru v sekci /filter, Dispečer nahlédne do seznamu snadno pochopitelných adres URL. Pokud je zamítnutá adresa URL na seznamu, Dispečer povolí přístup k jednoduché URL.
Chcete-li povolit přístup k vanity URL, přidejte sekci /vanity_urls do sekce /farms, podobně jako v následujícím příkladu:
/vanity_urls {/url "/libs/granite/dispatcher/content/vanityUrls.html"/file "/tmp/vanity_urls"/delay 300 }Sekce /vanity_urls obsahuje následující vlastnosti:
/url: Cesta ke službě vanity URL, která běží na instanci vykreslení. Hodnota této vlastnosti musí být "/libs/granite/dispatcher/content/vanityUrls.html".
/file: Cesta k místnímu souboru, kam Dispečer ukládá seznam praktických URL. Ujistěte se, že Dispatcher má k tomuto souboru přístup pro zápis.
/delay: (sekundy) Doba mezi voláními služby vanity URL.
Pomocí následujícího postupu povolíte přístup k jednoduchým adresám URL.
Pokud je vaší vykreslovací službou instance AEM, nainstalujte balíček com.adobe.granite.dispatcher.vanityurl.content na instanci publikování (viz poznámka výše). Pro každou snadno použitelnou adresu URL, kterou jste nakonfigurovali pro stránku AEM nebo CQ, zajistěte že konfigurace /filter popírá URL. Je-li to nutné, přidejte filtr, který URL zakáže. Níže přidejte sekci /vanity_urls /farms.Restart webový server Apache.Požadavky na syndikaci jsou obvykle určeny pouze pro Dispečera, takže ve výchozím nastavení nejsou odesílány do rendereru (například instance AEM).
Pokud je to nutné, nastavte vlastnost /propagateSyndPost na "1", aby se požadavky na syndikaci předávaly Dispatcherovi. Pokud je nastaveno, musíte se ujistit, že požadavky POST nejsou v sekci filtru zamítnuty.
Sekce /cache řídí, jak Dispatcher ukládá dokumenty do mezipaměti. Nakonfigurujte několik dílčích vlastností pro implementaci strategií ukládání do mezipaměti:
/docroot/statfile/serveStaleOnError/allowAuthorized/rules/statfileslevel/invalidate/invalidateHandler/allowedClients/ignoreUrlParams/headers/mode/gracePeriod/enableTTLPříklad sekce mezipaměti může vypadat takto:
/cache{/docroot "/opt/dispatcher/cache"/statfile"/tmp/dispatcher-website.stat"/allowAuthorized "0"/rules{# Seznam souborů, které jsou v mezipaměti}/invalidate{# Seznam souborů, které jsou auto-invalidated}}Vlastnost /docroot identifikuje adresář, kde jsou uloženy soubory uložené v mezipaměti.
POZNÁMKA
Hodnota musí být přesně stejná jako kořen dokumentu webového serveru, aby Dispečer a webový server zpracovávali stejné soubory. Webový server je odpovědný za doručení správného stavového kódu, když je použit soubor mezipaměti dispečera, proto je důležité, aby ho také našel.
Pokud používáte více farem, každá farma musí používat jiný kořen dokumentu.
Vlastnost /statfile identifikuje soubor, který se má použít jako statfile. Dispečer používá tento soubor k registraci času poslední aktualizace obsahu. Statfile může být libovolný soubor na webovém serveru.
Statfile nemá žádný obsah. Když je obsah aktualizován, Dispečer aktualizuje časové razítko. Výchozí statfile se jmenuje .stat a je uložen v docrootu. Dispečer blokuje přístup ke statfile.
POZNÁMKA
Pokud je nakonfigurován /statfileslevel, Dispatcher ignoruje vlastnost /statfile a jako název použije .stat.
Vlastnost /serveStaleOnError řídí, zda Dispatcher vrátí neplatné dokumenty, když vykreslovací server vrátí chybu. Ve výchozím nastavení, když se dotknete souboru stat a zneplatní obsah uložený v mezipaměti, Dispatcher obsah uložený v mezipaměti při příštím vyžádání odstraní.
Pokud je /serveStaleOnError nastaveno na "1", Dispatcher neodstraní neplatný obsah z mezipaměti, pokud vykreslovací server nevrátí úspěšnou odpověď. Odpověď 5xx od AEM nebo vypršení časového limitu připojení způsobí, že Dispečer obslouží zastaralý obsah a odpoví se stavem HTTP 111 (Revalidation Failed).
Vlastnost /allowAuthorized řídí, zda jsou požadavky, které obsahují některé z následujících ověřovacích informací, ukládány do mezipaměti:
Autorizační hlavičkaSoubor cookie s názvem authorizačníSoubor cookie s názvem login-tokenVe výchozím nastavení nejsou požadavky, které obsahují tyto ověřovací informace, ukládány do mezipaměti, protože při vrácení dokumentu uloženého v mezipaměti klientovi není prováděna autentizace. Tato konfigurace zabrání Dispečerovi v poskytování dokumentů uložených v mezipaměti uživatelům, kteří nemají potřebná práva.
Pokud však vaše požadavky umožňují ukládání ověřených dokumentů do mezipaměti, nastavte /allowAuthorized na jednu:
/allowAuthorized "1"
POZNÁMKA
Chcete-li povolit správu relací (pomocí vlastnosti /sessionmanagement), musí být vlastnost /allowAuthorized nastavena na "0".
Vlastnost /rules určuje, které dokumenty jsou ukládány do mezipaměti podle cesty dokumentu. Bez ohledu na vlastnost /rules Dispatcher nikdy neukládá dokument do mezipaměti za následujících okolností:
Pokud identifikátor URI požadavku obsahuje otazník (?).
To obvykle označuje dynamickou stránku, jako je výsledek vyhledávání, který není třeba ukládat do mezipaměti.Chybí přípona souboru.
Webový server potřebuje rozšíření k určení typu dokumentu (typ MIME).Je nastavena autentizační hlavička (toto lze nakonfigurovat).
Pokud instance AEM odpoví následujícími záhlavími:
no-cacheno-storemust-revalidatePOZNÁMKA
Metody GET nebo HEAD (pro hlavičku HTTP) lze uložit do mezipaměti Dispečerem. Další informace o ukládání záhlaví odpovědí do mezipaměti naleznete v části Ukládání záhlaví odpovědí HTTP do mezipaměti.
Každá položka ve vlastnosti /rules obsahuje vzor globus a typ:
Vzor glob se používá ke shodě s cestou dokumentu. Typ udává, zda ukládat do mezipaměti dokumenty, které odpovídají vzoru glob. Hodnota může být buď povolit (uložení dokumentu do mezipaměti) nebo zakázat (pro vždy vykreslení dokumentu).Pokud nemáte dynamické stránky (kromě těch, které jsou již vyloučeny výše uvedenými pravidly), můžete Dispatcher nakonfigurovat tak, aby vše . Sekce pravidel pro to vypadá takto:
/rules{/0000{/glob "*" /type "allow" }}Informace o vlastnostech glob naleznete v části Navrhování vzorů pro vlastnosti glob.
Pokud jsou některé části vaší stránky dynamické (například zpravodajská aplikace) nebo v rámci uzavřené skupiny uživatelů, můžete definovat výjimky:
POZNÁMKA
Uzavřené skupiny uživatelů nesmí být uloženy do mezipaměti, protože u stránek uložených v mezipaměti nejsou kontrolována uživatelská práva.
/rules{ /0000{ /glob "*" /typ "povolit" } /0001{ /glob "/en/novinky/*" /typ "zapřít" } /0002{ /glob "*/soukromé/*" /typ "deny"}}Komprese
Na webových serverech Apache můžete komprimovat dokumenty uložené v mezipaměti. Komprese umožňuje Apache vrátit dokument v komprimované podobě, pokud o to klient požádá. Komprese se provádí automaticky povolením modulu Apache mod_deflát, například:
AddOutputFilterByType DEFLATE text/plainModul je standardně nainstalován s Apache 2.x.
Použijte vlastnost /statfileslevel k zneplatnění souborů uložených v mezipaměti podle jejich cesty:
Dispečer vytvoří soubory .stat v každé složce od složky docroot až po úroveň, kterou určíte. Složka docroot má úroveň 0.
Soubory jsou zrušeny klepnutím na soubor .stat. Datum poslední úpravy souboru .stat se porovnává s datem poslední úpravy dokumentu uloženého v mezipaměti. Dokument je znovu načten, pokud je soubor .stat novější.
Když je soubor umístěný na určité úrovni zneplatněn, dotknou se všechny soubory .stat od docroot až po úroveň zneplatněného souboru nebo nakonfigurované statsfilevel (podle toho, co je menší).
Například: pokud nastavíte vlastnost statfileslevel na 6 a soubor je zneplatněn na úrovni 5, pak se dotkne každého souboru .stat od docroot po 5. Pokračujeme v tomto příkladu, pokud je soubor zneplatněn na úrovni 7, pak každý . Dotkne se souboru stat z docroot do 6 (protože /statfileslevel = "6").Ovlivněny jsou pouze zdroje podél cesty k neplatnému souboru. Zvažte následující příklad: web používá strukturu /content/myWebsite/xx/. Pokud nastavíte statfileslevel na 3, vytvoří se .statfile následovně:
docroot/content/content/myWebsite/content/myWebsite/*xx*Když je soubor v /content/myWebsite/xx zneplatněn, dotknete se každého souboru .stat od docroot až po /content/myWebsite/xxis. To by platilo pouze pro /content/myWebsite/xx a ne například /content/myWebsite/yy nebo /content/anotherWebSite.
POZNÁMKA
Zneplatnění lze zabránit odesláním dalšího záhlaví CQ-Action-Scope:ResourceOnly. To lze použít k vyprázdnění určitých zdrojů bez znehodnocení ostatních částí mezipaměti. Další podrobnosti naleznete na této stránce a v části Ruční zrušení platnosti mezipaměti dispečera.
POZNÁMKA
Pokud zadáte hodnotu pro vlastnost /statfileslevel, vlastnost /statfile bude ignorována.
Vlastnost /invalidate definuje dokumenty, které jsou automaticky zrušeny při aktualizaci obsahu.
S automatickým zrušením platnosti Dispečer neodstraní soubory uložené v mezipaměti po aktualizaci obsahu, ale zkontroluje jejich platnost, když jsou příště požadovány. Dokumenty v mezipaměti, které nejsou automaticky zneplatněny, zůstanou v mezipaměti, dokud je aktualizace obsahu explicitně neodstraní.
Automatické zrušení platnosti se obvykle používá pro stránky HTML. Stránky HTML často obsahují odkazy na jiné stránky, takže je obtížné určit, zda aktualizace obsahu ovlivňuje stránku. Chcete-li se ujistit, že všechny relevantní stránky budou při aktualizaci obsahu zrušeny, automaticky zrušte platnost všech stránek HTML. Následující konfigurace zruší platnost všech stránek HTML:
/invalidate{ /0000{ /glob "*" /type "deny" } /0001{ /glob "*.html" /type "allow" }}Informace o vlastnostech glob naleznete v části Navrhování vzorů pro vlastnosti glob.
Tato konfigurace způsobí následující aktivitu, když je aktivován /content/wknd/us/en:
Všechny soubory se vzorem en.* jsou odstraněny ze složky /content/wknd/us. Složka /content/wknd/us/en./_jcr_content je odstraněna. Všechny ostatní soubory, které odpovídají konfiguraci /invalidate, nebudou okamžitě odstraněny . Tyto soubory jsou odstraněny při dalším požadavku. V našem příkladu /content/wknd.html není smazán, bude smazán, když bude požadován /content/wknd.html.Pokud nabízíte ke stažení automaticky generované soubory PDF a ZIP, možná je budete muset automaticky zrušit jako studna. Příklad konfigurace vypadá takto:
/invalidate{ /0000 { /glob "*" /type "deny" } /0001 { /glob "*.html" /type "allow" } /0002 { /glob "*.zip" /type "allow" } / 0003 { /glob "*.pdf" /type "allow" }}Integrace AEM s Adobe Analytics poskytuje konfigurační data v souboru analytics.sitecatalyst.js na vašem webu. Vzorový soubor dispatcher.any dodaný s Dispatcherem obsahuje pro tento soubor následující pravidlo zneplatnění:
{ /glob "*/analytics.sitecatalyst.js"/type "allow"}Vlastnost /invalidateHandler vám umožňuje definovat skript, který je volán pro každý přijatý požadavek na zneplatnění od Dispečera.
Volá se s následujícími argumenty:
Popisovač – Cesta k obsahu, která je neplatnáAction – Akce replikace (např. Aktivovat, Deaktivovat) Rozsah akce – Rozsah akce replikace (prázdný, pokud není odeslána hlavička CQ-Action-Scope: ResourceOnly, podrobnosti viz Zrušení platnosti stránek uložených v mezipaměti z AEM )Tu lze použít k pokrytí řady různých případů použití, jako je znehodnocení mezipaměti jiných aplikací nebo ke zpracování případů, kdy externalizovaná adresa URL stránky a její místo v docroot neodpovídá cestě k obsahu.
Skript níže zaznamenává každý požadavek na zneplatnění do souboru.
/invalidateHandler "/opt/dispatcher/scripts/invalidate.sh"ukázka skriptu obslužného programu pro zneplatnění#!/bin/bashprintf "%-15s: %s %s" $1 $2 $3>> /opt/dispatcher/logs/invalidate.logVlastnost /allowedClients definuje konkrétní klienty, kteří mají povoleno vyprázdnit mezipaměť. Vzory kapek jsou porovnány s IP.
Následující příklad:
odepře přístup k jakémukoli klientovi explicitně povolí přístup k localhost/allowedClients{ /0001 { /glob "*.*.*.*"/type "deny" } /0002 { /glob "127.0.0.1" /type "allow" }}Informace o vlastnostech glob naleznete v části Návrh vzorků pro vlastnosti glob.
POZOR
Doporučujeme definovat /allowedClients.
Pokud tak neučiníte, může kterýkoli klient zavolat za účelem vymazání mezipaměti; pokud se to dělá opakovaně, může to vážně ovlivnit výkon webu.
Sekce ignoreUrlParams definuje, které parametry adresy URL jsou ignorovány při určování, zda je stránka uložena v mezipaměti nebo zda je doručena z mezipaměti:
Pokud adresa URL požadavku obsahuje parametry, které jsou všechny ignorovány, stránka se uloží do mezipaměti. Pokud adresa URL požadavku obsahuje jeden nebo více parametrů, které nejsou ignorovány, stránka se neuloží.Pokud je parametr stránky ignorován, se uloží do mezipaměti při prvním požadavku na stránku. Následné požadavky na stránku jsou doručeny stránce uložené v mezipaměti bez ohledu na hodnotu parametru v požadavku.
Chcete-li určit, které parametry budou ignorovány, přidejte do vlastnosti ignoreUrlParams pravidla glob:
Chcete-li parametr ignorovat, vytvořte vlastnost glob, která parametr umožňuje. Chcete-li zabránit ukládání stránky do mezipaměti, vytvořte vlastnost glob, která parametr zakáže.Následující příklad způsobí, že Dispatcher ignoruje parametr q, takže bude vyžadovat adresy URL, které include parametr q jsou uloženy v mezipaměti:
/ignoreUrlParams{/0001 { /glob "*" /type "deny" }/0002 { /glob "q" /type "allow" }}Pomocí příkladu hodnoty ignoreUrlParams způsobí následující požadavek HTTP, že stránka bude uloženo do mezipaměti, protože parametr q je ignorován:
GET /mypage.html?q=5Pomocí příkladu hodnoty ignoreUrlParams způsobí následující požadavek HTTP, že stránka nebude uložena do mezipaměti, protože parametr p není ignorován:
GET /mypage.html?q=5&p=4Informace o vlastnostech glob naleznete v části Navrhování vzorů pro vlastnosti glob.
POZNÁMKA
Tato funkce je dostupná ve verzi 4.1.11 Dispečera.
Vlastnost /headers umožňuje definovat typy HTTP hlaviček, které budou ukládány do mezipaměti Dispečerem. Při prvním požadavku na prostředek bez mezipaměti se všechna záhlaví odpovídající jedné z nakonfigurovaných hodnot (viz ukázka konfigurace níže) uloží do samostatného souboru vedle souboru mezipaměti. Při následných požadavcích na prostředek uložený v mezipaměti jsou uložená záhlaví přidána do odpovědi.
Níže je uveden příklad výchozí konfigurace:
/cache {.../headers {"Cache-Control""Content-Disposition""Content-Type""Expires""Last-Modified""X-Content-Type-Options""Last-Modified"}}POZNÁMKA
Pokud potřebujete, aby Dispečer ukládal a doručoval hlavičky odpovědí ETag z AEM, postupujte takto:
Přidejte název záhlaví do sekce /cache/headers. Přidejte následující direktivu Apache v části týkající se Dispatcher:FileETag noneVlastnost mode určuje, jaká oprávnění k souborům se použijí na nové adresáře a soubory v mezipaměti. Toto nastavení je omezeno umask volajícího procesu. Je to osmičkové číslo vytvořené ze součtu jedné nebo více z následujících hodnot:
0400 Povolit čtení vlastníkovi.0200 Povolit zápis vlastníkovi.0100 Povolit vlastníkovi vyhledávat v adresářích.0040 Povolit čtení členům skupiny.0020 Povolit zápis členům skupiny.0010 Povolit členům skupiny vyhledávat v adresáři.0004 Povolit čtení ostatním .0002 Povolit zápis ostatním.0001 Povolit ostatním vyhledávat v adresáři.Výchozí hodnota je 0755, která umožňuje vlastníkovi číst, zapisovat nebo vyhledávat a skupině a ostatním číst nebo vyhledávat.
S výchozí vlastností /invalidate každá aktivace účinně zneplatní všechny soubory .html (pokud jejich cesta odpovídá části /invalidate). Na webu se značným provozem zvýší vícenásobné následné aktivace zatížení procesoru na backendu. V takovém případě by bylo žádoucí „utlumit“ dotýkání se souboru .stat, aby web zůstal responzivní. To lze provést pomocí vlastnosti /gracePeriod.
Vlastnost /gracePeriod definuje počet sekund, po které může být zastaralý, automaticky zneplatněný zdroj stále obsluhován z mezipaměti po poslední aktivaci. Vlastnost lze použít v nastavení, kde by dávka aktivací jinak opakovaně znehodnotila celou mezipaměť. Doporučená hodnota je 2 sekundy.
Další podrobnosti naleznete také v částech /invalidate a /statfileslevel výše.
Pokud je nastavena, vlastnost /enableTTL vyhodnotí hlavičky odpovědí z backendu, a pokud obsahují maximální stáří Cache-Control nebo datum vypršení platnosti, pomocný, vytvoří se prázdný soubor vedle souboru mezipaměti s časem úpravy rovným datu vypršení platnosti. Když je soubor uložený v mezipaměti požadován po uplynutí doby úpravy, je automaticky znovu požadován z backendu.
POZNÁMKA
Tato funkce je dostupná ve verzi 4.1.11 nebo novější Dispatcheru.
Sekce /statistics definuje kategorie souborů, pro které Dispatcher hodnotí odezvu každého vykreslení. Dispečer používá skóre k určení, které vykreslení odeslat požadavek.
Každá kategorie, kterou vytvoříte, definuje vzor globusu. Dispečer porovná URI požadovaného obsahu s těmito vzory, aby určil kategorii požadovaného obsahu:
Pořadí kategorií určuje pořadí, ve kterém jsou porovnávány s URI. První vzor kategorie, který odpovídá URI, je kategorie souboru. Žádné další vzory kategorií se nevyhodnocují.Dispečer podporuje maximálně 8 statistických kategorií. Pokud definujete více než 8 kategorií, použije se pouze prvních 8.
Výběr vykreslení
Pokaždé, když Dispečer vyžaduje vykreslenou stránku, použije k výběru vykreslení následující algoritmus:
Pokud požadavek obsahuje název vykreslení v souboru cookie vykreslení, Dispečer toto vykreslení použije.
Pokud požadavek neobsahuje žádný soubor cookie vykreslení, Dispečer porovná statistiky vykreslení:
Dispečer určí kategorii URI požadavku. Dispečer určí, které vykreslení má nejnižší skóre odezvy pro danou kategorii, a vybere toto vykreslení.Pokud ještě není vybráno žádné vykreslení, použijte první vykreslení v seznamu.
Skóre pro kategorii vykreslení je založeno na předchozích dobách odezvy a také na předchozích neúspěšných a úspěšných připojeních, o která se Dispečer pokouší. Pro každý pokus se aktualizuje skóre pro kategorii požadovaného URI.
POZNÁMKA
Pokud nepoužíváte vyrovnávání zátěže, můžete tuto část vynechat.
Definujte kategorii pro každý typ dokumentu, pro který chcete uchovat statistiku pro výběr vykreslení. Sekce /statistics obsahuje sekci /categories. Chcete-li definovat kategorii, přidejte pod sekci /categories řádek v následujícím formátu:
/name { /glob "pattern"}
Název kategorie musí být pro farmu jedinečný. Vzor je popsán v části Navrhování vzorů pro vlastnosti glob.
Chcete-li určit kategorii identifikátoru URI, porovnává Dispatcher identifikátor URI s každým vzorem kategorie, dokud nenajde shodu. Dispečer začíná první kategorií v seznamu a pokračuje v pořadí. Nejprve proto umístěte kategorie s konkrétnějšími vzory.
Například Dispatcher, výchozí soubor dispatcher.any definuje kategorii HTML a kategorii ostatní. Kategorie HTML je specifičtější, a proto se zobrazuje jako první:
/statistics{/categories{/html { /glob "*.html" }/others{ /glob "*" }}}Následující příklad také obsahuje kategorii pro stránky vyhledávání:
/statistics{/categories{/search { /glob "*search.html" }/html { /glob "*.html" }/others{ /glob "*" }}}Vlastnost /unavailablePenalty nastavuje čas (v desetinách sekundy), který se použije na statistiku vykreslení, když selže připojení k vykreslení. Dispečer přidá do kategorie statistik čas, který odpovídá požadovanému URI.
Trest se například použije, když nelze navázat spojení TCP/IP s určeným názvem hostitele/portem, buď proto, že AEM neběží (a nenaslouchá), nebo kvůli problému souvisejícímu se sítí.
Vlastnost /unavailablePenalty je přímým potomkem sekce /farm (sourozenec sekce /statistics).
Pokud žádná vlastnost /unavailablePenalty neexistuje, použije se hodnota "1".
/unavailablePenalty "1"Vlastnost /stickyConnectionsFor definuje jednu složku, která obsahuje pevné dokumenty; k tomu bude přístup pomocí adresy URL. Dispečer odešle všechny požadavky od jednoho uživatele, které jsou v této složce, do stejné instance vykreslení. Pevná připojení zajišťují, že data relace jsou přítomna a konzistentní pro všechny dokumenty. Tento mechanismus používá soubor cookie vykreslování.
Následující příklad definuje pevné připojení ke složce /products:
/stickyConnectionsFor "/products"Pokud se stránka skládá z obsahu z několika uzlů obsahu, zahrňte vlastnost /paths, která uvádí cesty k obsahu. Stránka například obsahuje obsah z /content/image, /content/video a /var/files/pdfs. Následující konfigurace umožňuje pevná připojení pro veškerý obsah na stránce:
/stickyConnections {/paths {"/content/image""/content/video""/var/files/pdfs"}}Když jsou povolena pevná připojení, modul dispečer nastaví renderid cookie. Tento soubor cookie nemá příznak httponly, který by měl být přidán, aby se zvýšila bezpečnost. Můžete to provést nastavením vlastnosti httpOnly v uzlu /stickyConnections konfiguračního souboru dispatcher.any. Hodnota vlastnosti (buď 0 nebo 1) definuje, zda má soubor cookie vykreslení připojený atribut HttpOnly. Výchozí hodnota je 0, což znamená, že atribut nebude přidán.
Další informace o příznaku httponly naleznete na této stránce.
Když jsou povolena pevná připojení, modul dispečer nastaví soubor cookie renderid. Tento soubor cookie nemá příznak zabezpečení, který by měl být přidán, aby se zvýšila bezpečnost. Můžete to provést nastavením vlastnosti secure v uzlu /stickyConnections konfiguračního souboru dispatcher.any. Hodnota vlastnosti (buď 0 nebo 1) určuje, zda má soubor cookie vykreslení připojen atribut secure. Výchozí hodnota je 0, což znamená, že atribut bude přidán, pokud je příchozí požadavek zabezpečený. Pokud je hodnota nastavena na 1, pak bude příznak zabezpečení přidán bez ohledu na to, zda je příchozí požadavek zabezpečený nebo ne.
Nakonfigurujte chování dispečera, když vykreslovací server vrátí chybu 500 nebo je nedostupný.
Použijte vlastnost /health_check k určení adresy URL, která se zkontroluje, když se objeví stavový kód 500. Pokud tato stránka také vrátí stavový kód 500, instance je považována za nedostupnou a na vykreslení je před dalším pokusem aplikována konfigurovatelná časová penalizace ( /unavailablePenalty).
/health_check{# Stránka je kontaktována, když instance vrátí 500/url "/health_check.html"}Vlastnost /retryDelay nastavuje čas (v sekundách), po který Dispečer čeká mezi koly pokusů o připojení k vykreslení farmy. Pro každé kolo je maximální počet pokusů Dispečera o připojení k renderu počet renderů ve farmě.
Dispečer používá hodnotu "1", pokud /retryDelay není explicitně definováno. Výchozí hodnota je ve většině případů vhodná.
/retryDelay "1"Vlastnost /numberOfRetries nastavuje maximální počet kol pokusů o připojení, které Dispatcher provede s vykreslením. Pokud se Dispečer nemůže úspěšně připojit k vykreslení po tomto počtu opakování, vrátí Dispatcher neúspěšnou odpověď.
Pro každé kolo je maximální počet pokusů Dispečera o připojení k vykreslení počet vykreslení ve farmě. Maximální počet pokusů o připojení je tedy ( /numberOfRetries) x (počet vykreslení).
Pokud hodnota není explicitně definována, výchozí hodnota je 5.
/numberOfRetries "5"Povolte mechanismus převzetí služeb při selhání na vaší farmě Dispatcher, aby znovu posílal požadavky na různá vykreslení, když původní požadavek selže. Když je povoleno převzetí služeb při selhání, Dispatcher se chová následovně:
Když požadavek na vykreslení vrátí stav HTTP 503 (NEDOSTUPNÉ), Dispečer odešle požadavek na jiné vykreslení. Když požadavek na vykreslení vrátí stav HTTP 50x (jiný než 503), Dispečer odešle požadavek na stránku, která je nakonfigurována pro vlastnost health_check. Pokud kontrola stavu vrátí 500 (INTERNAL_SERVER_ERROR), Dispečer odešle původní požadavek do jiného vykreslení. Pokud kontrola stavu vrátí HTTP stav 200, Dispatcher vrátí klientovi počáteční chybu HTTP 500.Chcete-li povolit převzetí služeb při selhání , přidejte na farmu (nebo web) následující řádek:
/failover "1"POZNÁMKA
Chcete-li zopakovat požadavky HTTP, které obsahují tělo, Dispatcher odešle do vykreslení hlavičku požadavku Expect: 100-continue, než zařadí skutečný obsah. CQ 5.5 s CQSE pak okamžitě odpoví buď 100 (POKRAČOVAT) nebo chybovým kódem. Ostatní kontejnery servletů by to měly také podporovat.
UPOZORNĚNÍ
Tato možnost není obvykle potřeba. Toto musíte použít pouze tehdy, když uvidíte následující zprávy protokolu:
Chyba při čtení odpovědi: Přerušeno systémové volání
Jakékoli systémové volání orientované na souborový systém může být přerušeno EINTR, pokud je objekt systémového volání umístěn na vzdáleném systému, ke kterému se přistupuje přes NFS. Zda mohou tato systémová volání vypršet nebo být přerušena, závisí na tom, jak byl základní souborový systém připojen k místnímu počítači.
Pokud má vaše instance takovou konfiguraci a protokol obsahuje následující zprávu, použijte parametr /ignoreEINTR:
Chyba při čtení odpovědi: Přerušeno systémové volání
Interně Dispatcher čte odpověď ze vzdáleného serveru (tj. AEM) pomocí smyčky, kterou lze reprezentovat jako:
while (odpověď není dokončena) {přečíst další data}Takové zprávy mohou být generovány, když se EINTR objeví v sekci "přečíst další data" a jsou způsobeny přijetím signálu před přijetím jakýchkoli dat.
Chcete-li taková přerušení ignorovat, můžete přidat následující parametr do dispatcher.any (před /farms):
/ignoreEINTR "1"
Nastavení /ignoreEINTR na "1" způsobí, že Dispečer se bude nadále pokoušet číst data, dokud nebude přečtena kompletní odpověď. Výchozí hodnota je 0 a deaktivuje možnost.
Několik sekcí v konfiguračním souboru Dispatcher používá vlastnosti glob jako kritéria výběru pro požadavky klientů. Hodnoty vlastností glob jsou vzory, které Dispečer porovnává s aspektem požadavku, jako je cesta k požadovanému prostředku nebo IP adresa klienta. Například položky v sekci /filter používají vzory glob k identifikaci cest stránek, na kterých Dispečer jedná nebo je odmítá.
Hodnoty glob mohou obsahovat zástupné znaky a alfanumerické znaky k definování vzoru.
Zástupný znak CharacterDescriptionExamples*Odpovídá nule nebo více souvislým instancím libovolného znaku v řetězci. Konečný znak shody je určen některou z následujících situací: Znak v řetězci se shoduje s dalším znakem ve vzoru a znak vzoru má následující vlastnosti: Ne *Ne ?A doslovný znak (včetně mezery ) nebo znakové třídy. Je dosaženo konce vzoru. Uvnitř znakové třídy je znak interpretován doslovně.*/geo* Odpovídá jakékoli stránce pod uzlem /content/geometrixx a /content/geometrixx-outdoors. Následující požadavky HTTP odpovídají vzoru glob: "GET /content/geometrixx/en.html""GET /content/geometrixx-outdoors/en.html"*outdoors/* Odpovídá jakékoli stránce pod uzlem /content/geometrixx-outdoors. Například následující požadavek HTTP odpovídá vzoru glob: "GET /content/geometrixx-outdoors/en.html"?Odpovídá libovolnému jednotlivému znaku. Použijte vnější třídy postav. Uvnitř třídy znaků je tento znak interpretován doslovně.*outdoors/??/* Odpovídá stránkám pro jakýkoli jazyk na webu geometrixx-outdoors. Například následující požadavek HTTP odpovídá vzoru glob: „GET /content/geometrixx-outdoors/en/men.html“ Následující požadavek neodpovídá vzoru glob: „GET /content/geometrixx-outdoors/en.html“ [ a ]Označuje začátek a konec třídy znaků. Třídy znaků mohou zahrnovat jeden nebo více rozsahů znaků a jednotlivé znaky. Ke shodě dojde, pokud se cílový znak shoduje s kterýmkoli ze znaků ve znakové třídě nebo v definovaném rozsahu. Pokud není zahrnuta uzavírací závorka, vzor neprodukuje žádné shody. *[o]men.html* Odpovídá následujícímu požadavku HTTP:"GET /content/geometrixx-outdoors/en/women.html"Neodpovídá následujícímu požadavku HTTP:"GET /content/geometrixx-outdoors/en/men. html" *[o/]men.html* Odpovídá následujícím požadavkům HTTP: "GET /content/geometrixx-outdoors/en/women.html""GET /content/geometrixx-outdoors/en/men.html"-Označuje rozsah znaků. Pro použití ve znakových třídách. Mimo třídu znaků je tento znak interpretován doslovně.*[m-p]men.html* Odpovídá následujícímu požadavku HTTP: "GET /content/geometrixx-outdoors/en/women.html"Neodpovídá následující požadavek HTTP:"GET /content/geometrixx-outdoors/en/men.html"! Neguje znak nebo třídu znaků, která následuje. Používejte pouze pro negaci znaků a rozsahů znaků uvnitř tříd znaků. Ekvivalent k zástupnému znaku ^. Mimo třídu znaků je tento znak interpretován doslovně.*[!o]men.html* Odpovídá následujícímu požadavku HTTP: "GET /content/geometrixx-outdoors/en/men.html"Neodpovídá následujícímu požadavku HTTP: "GET /content/geometrixx-outdoors/en/women.html"*[!o!/]men.html* Neodpovídá následujícímu požadavku HTTP:"GET /content/geometrixx-outdoors/en/women.html" nebo "GET /content/geometrixx-outdoors/en/men. html"^Neguje znak nebo rozsah znaků, který následuje. Použijte pro negaci pouze znaků a rozsahů znaků uvnitř tříd znaků. Ekvivalent k ! zástupný znak. Mimo třídu znaků je tento znak interpretován doslovně. Příklady pro ! použít zástupný znak, který nahradí ! znaky v ukázkových vzorech se znaky ^.V konfiguraci webového serveru můžete nastavit:
Umístění souboru protokolu Dispatcher. Úroveň protokolu.Další informace naleznete v dokumentaci k webovému serveru a v souboru readme vaší instance Dispatcher.
Otočené / propojené protokoly Apache
Pokud používáte webový server Apache, můžete použít standardní funkcionalitu pro rotované a/nebo propojené protokoly. Například pomocí zapojených protokolů:
DispatcherLog "| /usr/apache/bin/rotatelogs logs/dispatcher.log%Y%m%d 604800"
Toto se automaticky otočí:
soubor protokolu dispečera; s časovým razítkem v rozšíření (logs/dispatcher.log%Y%m%d).na týdenní bázi (60 x 60 x 24 x 7 = 604 800 sekund).Prostudujte si dokumentaci k webovému serveru Apache o rotaci protokolů a Piped Logs; například Apache 2.4.
POZNÁMKA
Po instalaci je výchozí úroveň protokolu vysoká (tj. úroveň 3 = ladění), takže Dispečer zaznamenává všechny chyby a varování. To je velmi užitečné v počátečních fázích.
To však vyžaduje další zdroje, takže když Dispečer funguje hladce podle vašich požadavků, můžete (měli byste) snížit úroveň protokolu.
Mezi další vylepšení pro Dispatcher zavádí verze 4.2.0 také protokolování trasování.
Toto je vyšší úroveň než protokolování ladění a zobrazuje další informace v protokolech. Přidává protokolování pro:
Hodnoty předávaných hlaviček;Pravidlo, které se používá pro určitou akci.Protokolování trasování můžete povolit nastavením úrovně protokolu na vašem webovém serveru na 4.
Níže je uveden příklad protokolů s povoleným trasováním:
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[Host] = "localhost:8443"[Čt Mar 03 16:05:38 2016] [T] [17183] request.headers[ User-Agent] = "curl/7.43.0"[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[Accept] = "*/*"[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-SSL-Client-Cert] = "(null)"[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[Via ] = "1.1 localhost:8443 (dispečer)"[Čt 3. března 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-For] = "::1"[Čt 3. 16. března: 05:38 2016] [T] [17183] request.headers[X-Forwarded-SSL] = "on"[Čt 3. března 16:05:38 2016] [T] [17183] request.headers[X-Forwarded- SSL-Cipher] = "DHE-RSA-AES256-SHA"[Čt 3. března 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-SSL-Session-ID] = "ba931f5e4925c215367dbd4df 91f4a4d51232a934ae"[ Čt 3. března 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-Port] = "8443"[Čt 3. března 16:05:38 2016] [T] [17183] request.headers [Server-Agent] = "Communique-Dispatcher"A při požadavku na soubor, který odpovídá pravidlu blokování, bude zaznamenána událost:
[Thu Mar 03 14:42:45 2016] [T] [11831] „GET /content.infinity.json HTTP/1.1“ byl zablokován z důvodu /0082Pro potvrzení základní obsluha a interakce webového serveru, Dispečera a instance AEM můžete použít následující kroky:
Nastavte úroveň protokolu na 3.
Spusťte webový server; tím se také spustí Dispečer.
Spusťte instanci AEM.
Zkontrolujte soubory protokolu a chyb pro váš webový server a dispečera.
V závislosti na vašem webovém serveru byste měli vidět zprávy jako:[Čt 30. května 05:16:36 2002] [upozornění] Apache/2.0.50 (Unix) nakonfigurován a[Pá 19. ledna 17:22:16 2001] [I] [19096] Dispečer inicializován (sestavení XXXX)Procházejte web přes webový server. Potvrďte, že se obsah zobrazuje podle potřeby. Například v místní instalaci, kde AEM běží na portu 4502 a webový server na 80 přistupuje ke konzole Weby pomocí obou:
https://localhost:4502/libs/wcm/core/content/siteadmin.htmlhttps://localhost:80/libs/wcm/core/content/siteadmin.htmlVýsledky by měly být identické. Potvrďte přístup na další stránky pomocí stejného mechanismu.Zkontrolujte, zda se zaplňuje adresář mezipaměti.
Aktivujte stránku a zkontrolujte, zda je mezipaměť správně vyprázdněna.
Pokud vše funguje správně, můžete snížit úroveň protokolu na 0.
Ve složitých nastaveních můžete použít více dispečerů. Můžete například použít:
jeden Dispečer publikuje web na intranetu, druhý Dispečer, pod jinou adresou a s jiným nastavením zabezpečení, publikuje stejný obsah na internetu.V takovém případě se ujistěte, že každý požadavek prochází pouze jedním Dispečerem. Dispečer nezpracovává požadavky, které přicházejí od jiného dispečera. Proto se ujistěte, že oba dispečeři přistupují přímo na web AEM.
Při přidávání hlavičky X-Dispatcher-Info k požadavku, Dispatcher odpoví, zda byl cíl uložen do mezipaměti, vrácen z mezipaměti nebo jej vůbec nelze uložit do mezipaměti. Hlavička odpovědi X-Cache-Info obsahuje tyto informace v čitelné podobě. Tyto hlavičky odpovědí můžete použít k ladění problémů zahrnujících odpovědi uložené v mezipaměti Dispečera.
Tato funkce není ve výchozím nastavení povolena, takže aby mohla být zahrnuta hlavička odpovědi X-Cache-Info, musí farma obsahovat následující položku:
/info "1"Například
/farm{/mywebsite{# Zahrnout hlavičku odpovědi X-Cache-Info, pokud je X-Dispatcher-Info v hlavičce požadavku/informacích "1"}}Záhlaví X-Dispatcher-Info také nepotřebuje hodnotu, ale pokud používáte curl pro testování, musíte zadat hodnotu, abyste mohli odeslat záhlaví, jako například:
curl -v -H "X-Dispatcher-Info: true" https://localhost/content/wknd/us/en.htmlNíže je seznam obsahující hlavičky odpovědí, které X-Dispatcher-Info vrátí:
cachedCílový soubor je obsažen v mezipaměti a dispečer určil, že je platný pro doručení it.cachingCílový soubor není obsažen v mezipaměti a dispečer určil, že je platný pro mezipaměť výstupu a doručení it.caching: stat soubor je novějšíCílový soubor je obsažen v mezipaměti, je však neplatný novějším souborem stat. Dispečer odstraní cílový soubor, znovu jej vytvoří z výstupu a doručí jej. Nelze uložit do mezipaměti: žádný kořenový adresář dokumentu Konfigurace farmy neobsahuje kořenový adresář dokumentu (konfigurační prvek cache.docroot). Nelze uložit do mezipaměti: cesta k souboru mezipaměti je příliš dlouhá Cílový soubor - zřetězení kořenového adresáře dokumentu a souboru URL - přesahuje nejdelší možný název souboru v systému. Nelze uložit do mezipaměti: cesta k dočasnému souboru je příliš dlouhá Šablona názvu dočasného souboru přesahuje nejdelší možný název souboru v systému. Dispečer nejprve vytvoří dočasný soubor a teprve poté vytvoří nebo přepíše soubor uložený v mezipaměti. Název dočasného souboru je název cílového souboru s připojenými znaky _YYYYXXXXXX, kde Y a X budou nahrazeny a vytvoří se jedinečný název. Nelze uložit do mezipaměti: URL požadavku nemá příponu URL požadavku nemá příponu nebo existuje cesta za příponou souboru, například: /test.html/a/path.not cacheable: požadavek nebyl GET nebo HEADMetoda HTTP není ani GET ani HEAD. Dispečer předpokládá, že výstup bude obsahovat dynamická data, která by neměla být uložena do mezipaměti. Nelze uložit do mezipaměti: požadavek obsahoval řetězec dotazu Požadavek obsahoval řetězec dotazu. Dispečer předpokládá, že výstup závisí na zadaném řetězci dotazu, a proto se neukládá do mezipaměti. Nelze uložit do mezipaměti: správce relací se neověřil Mezipaměť farmy je řízena správcem relací (konfigurace obsahuje uzel správy relací) a požadavek nebyl obsahovat příslušné autentizační informace.not cacheable: požadavek obsahuje autorizaciFarma nemá povoleno ukládat výstup do mezipaměti ( allowAuthorized 0) a požadavek obsahuje autentizační informace.not cacheable: cíl je adresářCílový soubor je adresář. To by mohlo poukazovat na určitou koncepční chybu, kdy URL i některá podadresa URL obsahují výstup, který lze uložit do mezipaměti, například pokud požadavek na /test.html/a/file.ext přijde jako první a obsahuje výstup uložitelný do mezipaměti, dispečer nebude schopen uložit výstup následného požadavku do mezipaměti do /test.html.not cacheable: URL požadavku má koncové lomítkoAdresa URL požadavku má koncové lomítko.not cacheable: URL požadavku není v mezipaměti pravidla Pravidla mezipaměti farmy explicitně zakazují ukládání výstupu nějakého požadavku do mezipaměti URL.not cacheable: kontrola autorizace odepřen přístupKontrola autorizace farmy odepřela přístup k souboru uloženému v mezipaměti.not cacheable: session not validCache farmy je řízena správcem relací (konfigurace obsahuje uzel správy relací) a relace uživatele není nebo již není platná .not cacheable: odpověď obsahuje no_cacheVzdálený server vrátil hlavičku Dispatcher: no_cache, která zakazuje dispečerovi ukládat výstup do mezipaměti.not cacheable: délka obsahu odpovědi je nula Délka obsahu odpovědi je nula; dispečer nevytvoří soubor s nulovou délkou.PREV: Oprava: Nelze kontaktovat chybu serveru DHCP v systému Windows 7, 8 ...
NEXT: Oprava DHCP není povolena pro Wi-Fi ve Windows – blog Auslogics