Dispatcher configureren configuring-dispatcher
De volgende secties beschrijven hoe te om diverse aspecten van de Verzender te vormen.
Ondersteuning voor IPv4 en IPv6 support-for-ipv-and-ipv
Alle elementen van AEM en Dispatcher kunnen in zowel IPv4 als IPv6 netwerken worden geïnstalleerd. Zie IPV4 en IPV6.
Dispatcher Configuration Files dispatcher-configuration-files
Standaard wordt de Dispatcher-configuratie opgeslagen in de dispatcher.any
tekstbestand, hoewel u de naam en locatie van dit bestand tijdens de installatie kunt wijzigen.
Het configuratiedossier bevat een reeks enig-getaxeerde of multi-getaxeerde eigenschappen die het gedrag van de Dispatcher controleren:
- Namen van eigenschappen worden voorafgegaan door een slash
/
. - Met multi-getaxeerde eigenschappen worden onderliggende items tussen accolades geplaatst
{ }
.
Een voorbeeldconfiguratie is als volgt gestructureerd:
# name of the dispatcher
/name "internet-server"
# each farm configures a set off (loadbalanced) renders
/farms
{
# first farm entry (label is not important, just for your convenience)
/website
{
/clientheaders
{
# List of headers that are passed on
}
/virtualhosts
{
# List of URLs for this Web site
}
/sessionmanagement
{
# settings for user authentification
}
/renders
{
# List of AEM instances that render the documents
}
/filter
{
# List of filters
}
/vanity_urls
{
# List of vanity URLs
}
/cache
{
# Cache configuration
/rules
{
# List of cachable documents
}
/invalidate
{
# List of auto-invalidated documents
}
}
/statistics
{
/categories
{
# The document categories that are used for load balancing estimates
}
}
/stickyConnectionsFor "/myFolder"
/health_check
{
# Page gets contacted when an instance returns a 500
}
/retryDelay "1"
/numberOfRetries "5"
/unavailablePenalty "1"
/failover "1"
}
}
U kunt andere dossiers omvatten die tot de configuratie bijdragen:
- Als het configuratiebestand groot is, kunt u het opsplitsen in verschillende kleinere bestanden (die eenvoudiger te beheren zijn) en elk bestand opnemen.
- Bestanden opnemen die automatisch worden gegenereerd.
Als u bijvoorbeeld het bestand myFarm.any wilt opnemen in het dialoogvenster /farms
de configuratie gebruikt de volgende code:
/farms
{
$include "myFarm.any"
}
Als u een reeks bestanden wilt opgeven die u wilt opnemen, gebruikt u de asterisk (*
) als een jokerteken.
Als de bestanden farm_1.any
tot farm_5.any
U kunt de configuratie van de landbouwbedrijven 1 tot 5 bevatten, kunt u hen omvatten als volgt:
/farms
{
$include "farm_*.any"
}
Omgevingsvariabelen gebruiken using-environment-variables
U kunt omgevingsvariabelen gebruiken in tekenreeksgetaxeerde eigenschappen in het bestand dispatcher.any in plaats van de waarden hard te coderen. Als u de waarde van een omgevingsvariabele wilt opnemen, gebruikt u de indeling ${variable_name}
.
Als het bestand dispatcher.any zich bijvoorbeeld in dezelfde map bevindt als de cachemap, geldt de volgende waarde voor de docroot eigenschap kan worden gebruikt:
/docroot "${PWD}/cache"
Als ander voorbeeld, als u een milieuvariabele genoemd creeert PUBLISH_IP
dat hostname van AEM publiceert instantie, de volgende configuratie van /renders
eigenschap kan worden gebruikt:
/renders {
/0001 {
/hostname "${PUBLISH_IP}"
/port "8443"
}
}
De instantie Dispatcher een naam geven naming-the-dispatcher-instance-name
Gebruik de /name
eigenschap om een unieke naam op te geven om uw instantie Dispatcher te identificeren. De /name
bezit is een top-level bezit in de configuratiestructuur.
Bedrijven definiëren defining-farms-farms
De /farms
Deze eigenschap definieert een of meer sets Dispatcher-gedrag, waarbij elke set aan verschillende websites of URL's is gekoppeld. De /farms
de eigenschap kan bestaan uit één bedrijf of meerdere landbouwbedrijven :
- Gebruik één enkel landbouwbedrijf wanneer u de Verzender al uw Web-pagina's of websites op de zelfde manier wilt behandelen.
- Maak meerdere boerderijen wanneer verschillende gebieden van uw website of verschillende websites een ander Dispatcher-gedrag vereisen.
De /farms
bezit is een top-level bezit in de configuratiestructuur. Om een landbouwbedrijf te bepalen, voeg een kindbezit aan toe /farms
eigenschap. Gebruik een bezitsnaam die uniek het landbouwbedrijf binnen de instantie van de Verzender identificeert.
De /farmname
Deze eigenschap is gecompileerd en bevat andere eigenschappen die het gedrag Verzender definiëren:
- De URL's van de pagina's waarop het landbouwbedrijf van toepassing is.
- Een of meer service-URL's (doorgaans van AEM publicatieinstanties) die moeten worden gebruikt voor het weergeven van documenten.
- De statistische gegevens die moeten worden gebruikt voor meerdere renderers van documenten die een taakverdeling hebben.
- Verschillende andere gedragingen, zoals welke bestanden in cache moeten worden geplaatst en waar ze moeten worden opgeslagen.
De waarde kan elk alfanumeriek teken (a-z, 0-9) bevatten. Het volgende voorbeeld toont de skeletdefinitie voor twee landbouwbedrijven genoemd /daycom
en /docsdaycom
:
#name of dispatcher
/name "day sites"
#farms section defines a list of farms or sites
/farms
{
/daycom
{
...
}
/docdaycom
{
...
}
}
Elk landbouwbedrijfbezit kan de volgende kindeigenschappen bevatten:
Een standaardpagina opgeven (alleen IIS) - /homepage
specify-a-default-page-iis-only-homepage
/homepage
parameter (alleen IIS) werkt niet meer. Gebruik in plaats daarvan de opdracht IIS URL Rewrite Module.mod_rewrite
-module. Raadpleeg de documentatie bij de Apache-website voor meer informatie over mod_rewrite
(bijvoorbeeld Apache 2.4). Wanneer u mod_rewrite
, is het aan te raden de markering 'passthrough|PT' (passthrough naar volgende handler) te gebruiken om de herschrijfengine te dwingen de uri
interne request_rec
structuur aan de waarde van filename
veld.De HTTP-headers opgeven die moeten worden doorgegeven specifying-the-http-headers-to-pass-through-clientheaders
De /clientheaders
eigenschap definieert een lijst met HTTP-headers die door Dispatcher worden doorgegeven van de HTTP-client-aanvraag naar de renderer (AEM-instantie).
Standaard stuurt de Dispatcher de standaard HTTP-headers door naar de AEM-instantie. In sommige gevallen wilt u mogelijk extra kopteksten doorsturen of specifieke koppen verwijderen:
- Voeg kopballen, zoals douanekopballen, toe die uw AEM instantie in de HTTP- aanvraag verwacht.
- Verwijder kopballen, zoals authentificatiekopballen die slechts relevant voor de Webserver zijn.
Als u de reeks kopballen aanpast om over te gaan, moet u een uitvoerige lijst van kopballen, met inbegrip van die kopballen specificeren die normaal inbegrepen door gebrek zijn.
Voor een Dispatcher-instantie die pagina-activeringsverzoeken voor publicatie-instanties afhandelt, is bijvoorbeeld de opdracht PATH
in de /clientheaders
sectie. De PATH
de kopbal laat communicatie tussen de replicatieagent en de Dispatcher toe.
De volgende code is een voorbeeldconfiguratie voor /clientheaders
:
/clientheaders
{
"CSRF-Token"
"X-Forwarded-Proto"
"referer"
"user-agent"
"authorization"
"from"
"content-type"
"content-length"
"accept-charset"
"accept-encoding"
"accept-language"
"accept"
"host"
"max-forwards"
"proxy-authorization"
"proxy-connection"
"range"
"cookie"
"cq-action"
"cq-handle"
"handle"
"action"
"cqstats"
"depth"
"translate"
"expires"
"date"
"dav"
"ms-author-via"
"if"
"lock-token"
"x-expected-entity-length"
"destination"
"PATH"
}
Virtuele hosts identificeren identifying-virtual-hosts-virtualhosts
De /virtualhosts
het bezit bepaalt een lijst van alle hostname en de combinaties van URI die de Ontvanger voor dit landbouwbedrijf goedkeurt. U kunt de asterisk (*
) als jokerteken. Waarden voor devirtualhosts
eigenschap gebruikt de volgende indeling:
[scheme]host[uri][*]
scheme
: (Optioneel) Ofwelhttps://
ofhttps://.
host
: De naam of het IP-adres van de hostcomputer en, indien nodig, het poortnummer. (Zie https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.23)uri
: (Optioneel) Het pad naar de bronnen.
De volgende verzoeken van de voorbeeldconfiguratie om .com
en .ch
domeinen van myCompany, en alle domeinen van mySubDivision:
/virtualhosts
{
"www.myCompany.com"
"www.myCompany.ch"
"www.mySubDivison.*"
}
De volgende configuratiehandgrepen alles verzoeken:
/virtualhosts
{
"*"
}
De virtuele host oplossen resolving-the-virtual-host
Wanneer de Ontvanger een HTTP of HTTPS verzoek ontvangt, vindt het de virtuele gastheerwaarde die best aanpast host,
uri
, en scheme
kopteksten van de aanvraag. Dispatcher evalueert de waarden in het dialoogvenster virtualhosts
eigenschappen in de volgende volgorde:
- De afzender begint bij het laagste landbouwbedrijf en vordert omhoog in het dispatcher.any dossier.
- Voor elk landbouwbedrijf, begint de Ontvanger met de hoogste waarde in
virtualhosts
en gaat verder naar de lijst met waarden.
Dispatcher vindt de best-passende virtuele gastheerwaarde op de volgende manier:
- De eerst aangetroffen virtuele host die overeenkomt met alle drie de
host
descheme
en deuri
van het verzoek wordt gebruikt. - Indien niet
virtualhosts
waarden hebbenscheme
enuri
onderdelen die overeenkomen met descheme
enuri
van het verzoek, de eerste ontmoet virtuele gastheer die aanpasthost
van het verzoek wordt gebruikt. - Indien niet
virtualhosts
de waarden hebben een gastheerdeel dat de gastheer van het verzoek aanpast, wordt de hoogste virtuele gastheer van het hoogste landbouwbedrijf gebruikt.
Daarom zou u uw standaard virtuele gastheer bij de bovenkant van moeten plaatsen virtualhosts
eigenschap. PLoor de bovenste boerderij van uw dispatcher.any
bestand.
Voorbeeld virtuele hostresolutie example-virtual-host-resolution
In het volgende voorbeeld wordt een fragment uit een dispatcher.any
dossier dat twee landbouwbedrijven van de Verzender bepaalt, en elk landbouwbedrijf bepaalt een virtualhosts
eigenschap.
/farms
{
/myProducts
{
/virtualhosts
{
"www.mycompany.com/products/*"
}
/renders
{
/hostname "server1.myCompany.com"
/port "80"
}
}
/myCompany
{
/virtualhosts
{
"www.mycompany.com"
}
/renders
{
/hostname "server2.myCompany.com"
/port "80"
}
}
}
Gebruikend dit voorbeeld, toont de volgende lijst de virtuele gastheren die voor de bepaalde HTTP- verzoeken worden opgelost:
https://www.mycompany.com/products/gloves.html
www.mycompany.com/products/
https://www.mycompany.com/about.html
www.mycompany.com
Beveiligde sessies inschakelen - /sessionmanagement
enabling-secure-sessions-sessionmanagement
/allowAuthorized
Instellen op "0"
in de /cache
om deze functie in te schakelen. Zoals in het In cache plaatsen wanneer verificatie wordt gebruikt -sectie, wanneer u instelt /allowAuthorized 0
verzoeken die authentificatieinformatie omvatten zijn niet in cache geplaatst. Als het toestemming-gevoelige caching wordt vereist, zie Beveiligde inhoud in cache plaatsen pagina.Creeer een veilige zitting voor toegang tot teruggeven landbouwbedrijf zodat de gebruikers moeten login om het even welke pagina in het landbouwbedrijf toegang hebben. Na het programma openen, kunnen de gebruikers tot pagina's in het landbouwbedrijf toegang hebben. Zie Een gesloten gebruikersgroep maken voor informatie over het gebruiken van deze eigenschap met CUGs. Zie ook de Dispatcher Beveiligingscontrolelijst voordat je live gaat.
De /sessionmanagement
eigenschap is een subeigenschap van /farms
.
/sessionmanagement heeft verschillende subparameters:
/directory (verplicht)
De map waarin de sessiegegevens worden opgeslagen. Als de map niet bestaat, wordt deze gemaakt.
/directory "/"
), omdat dit ernstige problemen kan veroorzaken. Geef altijd het pad op naar de map waarin de sessiegegevens worden opgeslagen. Bijvoorbeeld:/sessionmanagement
{
/directory "/usr/local/apache/.sessions"
}
/encode (optioneel)
Hoe de sessiegegevens worden gecodeerd. Gebruiken md5
voor versleuteling met het md5-algoritme, of hex
voor hexadecimale codering. Als u de sessiegegevens versleutelt, kan een gebruiker met toegang tot het bestandssysteem de sessie-inhoud niet lezen. De standaardwaarde is md5
.
/header (optioneel)
De naam van de HTTP-header of het cookie waarin de autorisatiegegevens zijn opgeslagen. Als u de informatie opslaat in de http-header, gebruikt u HTTP:<header-name>
. Als u de gegevens in een cookie wilt opslaan, gebruikt u Cookie:<header-name>
. Als u geen waarde opgeeft, HTTP:authorization
wordt gebruikt.
/timeout (optioneel)
Het aantal seconden tot de sessietijden uit nadat deze voor het laatst zijn gebruikt. Indien niet opgegeven "800"
wordt gebruikt, zodat de zittingstijden iets meer dan 13 minuten na het laatste verzoek van de gebruiker uitkomen.
Een voorbeeldconfiguratie ziet er als volgt uit:
/sessionmanagement
{
/directory "/usr/local/apache/.sessions"
/encode "md5"
/header "HTTP:authorization"
/timeout "800"
}
Paginarenderers definiëren defining-page-renderers-renders
De /renders
Deze eigenschap definieert de URL waarnaar de Dispatcher een verzoek verzendt om een document te renderen. Het volgende voorbeeld /renders
-sectie identificeert één AEM voor rendering:
/renders
{
/myRenderer
{
# hostname or IP of the renderer
/hostname "aem.myCompany.com"
# port of the renderer
/port "4503"
# connection timeout in milliseconds, "0" (default) waits indefinitely
/timeout "0"
}
}
Het volgende voorbeeld /renders
sectie identificeert een AEM instantie die op de zelfde computer zoals Dispatcher loopt:
/renders
{
/myRenderer
{
/hostname "127.0.0.1"
/port "4503"
}
}
Het volgende voorbeeld /renders
de sectie verdeelt teruggeven verzoeken gelijkelijk onder twee AEM instanties:
/renders
{
/myFirstRenderer
{
/hostname "aem.myCompany.com"
/port "4503"
}
/mySecondRenderer
{
/hostname "127.0.0.1"
/port "4503"
}
}
Renderopties renders-options
/timeout
Geeft de time-out van de verbinding op die de AEM instantie benadert, in milliseconden. De standaardwaarde is "0"
, waardoor de Dispatcher oneindig wacht.
/receiveTimeout
Geeft de tijd op in milliseconden die een reactie mag afleggen. De standaardwaarde is "600000"
, waardoor de Dispatcher 10 minuten wacht. Een instelling van "0"
elimineert de onderbreking.
Wanneer de time-out wordt bereikt tijdens het parseren van responsheaders, wordt een HTTP-status van 504 (Bad Gateway) geretourneerd. Als de onderbreking wordt bereikt terwijl het antwoordlichaam wordt gelezen, keert de Dispatcher de onvolledige reactie op de cliënt terug. Het schrapt ook om het even welke caching dossiers die zouden kunnen zijn geschreven.
/ipv4
Hiermee wordt opgegeven of Dispatcher de opdracht getaddrinfo
functie (voor IPv6) of de gethostbyname
functie (voor IPv4) voor het verkrijgen van het IP adres van teruggeven. Een waarde van 0 oorzaken getaddrinfo
te gebruiken. Een waarde van 1
oorzaken gethostbyname
te gebruiken. De standaardwaarde is 0
.
De getaddrinfo
Deze functie retourneert een lijst met IP-adressen. Dispatcher herhaalt de lijst van adressen tot het een verbinding TCP/IP vestigt. Daarom ipv4
bezit is belangrijk wanneer teruggeven hostname met veelvoudige IP adressen wordt geassocieerd. En, de gastheer, in antwoord op getaddrinfo
functie, keert een lijst van IP adressen terug die altijd in de zelfde orde zijn. In deze situatie moet u de gethostbyname
functie zodat het IP adres dat de Ontvanger met verbindt wordt willekeurig verdeeld.
Amazon Elastic Load Balancing (ELB) is een service die reageert op getaddrinfo met een lijst met IP-adressen die mogelijk dezelfde volgorde heeft.
/secure
Als de /secure
eigenschap heeft een waarde van "1"
, gebruikt Dispatcher HTTPS om te communiceren met de AEM instantie. Zie voor meer informatie Dispatcher configureren voor gebruik van SSL.
/always-resolve
Met Dispatcher-versie 4.1.6., kunt u de /always-resolve
eigenschap als volgt:
- Wanneer ingesteld op
"1"
, lost het gastheer-naam op elk verzoek (de Verzender plaatst nooit om het even welk IP adres) op. Er kan een lichte prestatiesinvloed toe te schrijven zijn aan de extra vraag die wordt vereist om de gastheerinformatie voor elk verzoek te krijgen. - Als het bezit niet wordt geplaatst, wordt het IP adres in het voorgeheugen ondergebracht door gebrek.
Ook, kan dit bezit worden gebruikt voor het geval u in dynamische IP resolutiekwesties loopt, zoals aangetoond in de volgende steekproef:
/renders {
/0001 {
/hostname "host-name-here"
/port "4502"
/ipv4 "1"
/always-resolve "1"
}
}
Toegang tot inhoud configureren configuring-access-to-content-filter
Gebruik de /filter
om de HTTP-aanvragen op te geven die Dispatcher accepteert. Alle andere aanvragen worden teruggestuurd naar de webserver met een foutcode van 404 (pagina niet gevonden). Indien niet /filter
-sectie bestaat, worden alle aanvragen geaccepteerd.
Opmerking: Verzoeken om statfile worden altijd afgewezen.
De /filter
de sectie bestaat uit een reeks regels die of toegang tot inhoud volgens patronen in het verzoek-lijn deel van het HTTP- verzoek ontkennen of toestaan. Gebruik een strategie voor lijst van gewenste personen voor uw /filter
sectie:
- Eerst, ontken toegang tot alles.
- Toegang tot inhoud toestaan als dat nodig is.
Een filter definiëren defining-a-filter
Elk item in het dialoogvenster /filter
Deze sectie bevat een type en een patroon die overeenkomen met een specifiek element van de aanvraagregel of de gehele aanvraagregel. Elk filter kan de volgende items bevatten:
-
Type: De
/type
Hiermee wordt aangegeven of toegang wordt toegestaan of geweigerd voor de aanvragen die overeenkomen met het patroon. De waarde kanallow
ofdeny
. -
Element van de aanvraagregel: Inclusief
/method
,/url
,/query
, of/protocol
. Neem ook een patroon op voor het filteren van aanvragen. Filter ze op basis van specifieke delen van het request-line deel in de HTTP-aanvraag. Filteren op elementen van de aanvraaglijn (eerder dan op de volledige verzoeklijn) is de aangewezen filtermethode. -
Geavanceerde elementen van de aanvraagregel: Vanaf Dispatcher 4.2.0 zijn er vier nieuwe filterelementen beschikbaar voor gebruik. Deze nieuwe elementen zijn
/path
,/selectors
,/extension
, en/suffix
respectievelijk. Neem een of meer van deze items op om de URL-patronen verder te beheren.
- glob, eigenschap: De
/glob
eigenschap wordt gebruikt om overeen te komen met de gehele request-line van de HTTP-aanvraag.
/filter
secties omdat dit tot beveiligingsproblemen kan leiden. Dus in plaats van:/glob "* *.css *"
/url "*.css"
The request-line Part of HTTP Requests the-request-line-part-of-http-requests
HTTP/1.1 definieert de request-line als volgt:
Method Request-URI HTTP-Version<CRLF>
De <CRLF>
tekens staan voor een regelterugloop gevolgd door een regelinvoer. Het volgende voorbeeld is verzoek-lijn die wordt ontvangen wanneer een cliënt om de V.S.-Engelse pagina van de plaats WKND verzoekt:
GET /content/wknd/us/en.html HTTP.1.1<CRLF>
Uw patronen moeten de ruimtetekens in verzoek-lijn en de <CRLF>
tekens.
Dubbele aanhalingstekens versus enkele aanhalingstekens double-quotes-vs-single-quotes
Gebruik bij het maken van filterregels dubbele aanhalingstekens "pattern"
voor eenvoudige patronen. Als u Dispatcher 4.2.0 of hoger gebruikt en uw patroon een reguliere expressie bevat, moet u het regex-patroon insluiten '(pattern1|pattern2)'
binnen enkele aanhalingstekens.
Reguliere expressies regular-expressions
In de versies van de Verzender later dan 4.2.0, kunt u POSIX Uitgebreide Reguliere Uitdrukkingen in uw filterpatronen omvatten.
Problemen met filters oplossen troubleshooting-filters
Als de filters niet worden geactiveerd zoals u zou verwachten, schakelt u Trackregistratie op Dispatcher zodat kunt u zien welk filter het verzoek onderschept.
Voorbeeldfilter: Alles weigeren example-filter-deny-all
In de volgende voorbeeldfiltersectie worden aanvragen voor alle bestanden door de Dispatcher afgewezen. Ontken toegang tot alle bestanden en geef vervolgens toegang tot specifieke gebieden.
/0001 { /type "deny" /url "*" }
Verzoeken naar een expliciet geweigerd gebied hebben tot gevolg dat een foutcode van 404 (pagina niet gevonden) wordt geretourneerd.
Voorbeeldfilter: toegang tot specifieke gebieden weigeren example-filter-deny-access-to-specific-areas
Met filters kunt u ook toegang tot verschillende elementen weigeren, zoals ASP-pagina's en gevoelige gebieden in een publicatie-instantie. Met het volgende filter krijgt u geen toegang tot ASP-pagina's:
/0002 { /type "deny" /url "*.asp" }
Voorbeeldfilter: aanvragen voor POSTEN inschakelen example-filter-enable-post-requests
Met het volgende voorbeeldfilter kunt u formuliergegevens verzenden met de methode POST:
/filter {
/0001 { /glob "*" /type "deny" }
/0002 { /type "allow" /method "POST" /url "/content/[.]*.form.html" }
}
Voorbeeldfilter: Toegang tot de workflowconsole toestaan example-filter-allow-access-to-the-workflow-console
In het volgende voorbeeld wordt een filter getoond dat wordt gebruikt om externe toegang tot de workflowconsole toe te staan:
/filter {
/0001 { /glob "*" /type "deny" }
/0002 { /type "allow" /url "/libs/cq/workflow/content/console*" }
}
Als uw publicatie-instantie gebruikmaakt van een webtoepassingscontext (bijvoorbeeld publiceren), kan deze ook aan uw filterdefinitie worden toegevoegd.
/0003 { /type "deny" /url "/publish/libs/cq/workflow/content/console/archive*" }
Als u toegang moet hebben tot enkele pagina's binnen het beperkte gebied, kunt u deze toegankelijk maken. Als u bijvoorbeeld toegang wilt verlenen tot het tabblad Archief in de Workflowconsole, voegt u de volgende sectie toe:
/0004 { /type "allow" /url "/libs/cq/workflow/content/console/archive*" }
Voorbeeld, filter: Reguliere expressies gebruiken example-filter-using-regular-expressions
Met dit filter schakelt u extensies in mappen met niet-openbare inhoud in met behulp van een reguliere expressie, die hier tussen enkele aanhalingstekens wordt gedefinieerd:
/005 { /type "allow" /extension '(css|gif|ico|js|png|swf|jpe?g)' }
Voorbeeld, filter: extra elementen van een aanvraag-URL filteren example-filter-filter-additional-elements-of-a-request-url
Hieronder ziet u een regelvoorbeeld waarin wordt voorkomen dat inhoud wordt opgehaald uit het /content
pad en de bijbehorende substructuur, met filters voor pad, kiezers en extensies:
/006 {
/type "deny"
/path "/content/*"
/selectors '(feed|rss|pages|languages|blueprint|infinity|tidy|sysview|docview|query|jcr:content|_jcr_content|search|childrenlist|ext|assets|assetsearch|[0-9-]+)'
/extension '(json|xml|html|feed))'
}
Voorbeeld /filter
sectie example-filter-section
Wanneer het vormen van de Dispatcher, beperking externe toegang zoveel mogelijk. In het volgende voorbeeld wordt minimale toegang geboden aan externe bezoekers:
-
/content
-
diverse inhoud, zoals ontwerpen en clientbibliotheken. Bijvoorbeeld:
/etc/designs/default*
/etc/designs/mydesign*
Nadat u filters hebt gemaakt, toegang tot testpagina om ervoor te zorgen dat uw AEM instantie veilig is.
Het volgende /filter
van de dispatcher.any
kan als basis worden gebruikt in uw Dispatcher-configuratiebestand.
Dit voorbeeld is gebaseerd op het standaardconfiguratiedossier dat van Dispatcher wordt voorzien en als voorbeeld voor gebruik in een productiemilieu bedoeld is. Objecten met voorvoegsel #
worden gedeactiveerd (met opmerkingen). Wees voorzichtig als u besluit een van deze items te activeren (door het verwijderen van de #
op die regel). Dit kan gevolgen hebben voor de beveiliging.
Ontken toegang tot alles en geef vervolgens toegang tot specifieke (beperkte) elementen:
/filter
{
# Deny everything first and then allow specific entries
/0001 { /type "deny" /url "*" }
# 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*" } # disable this rule to allow mapped content only
# /0024 { /type "allow" /url "/libs/*" }
# /0025 { /type "deny" /url "/libs/shindig/proxy*" } # if you enable /libs close access to proxy
# /0026 { /type "allow" /url "/home/*" }
# /0027 { /type "allow" /url "/tmp/*" }
# /0028 { /type "allow" /url "/var/*" }
# Enable extensions in non-public content directories, using a regular expression
/0041
{
/type "allow"
/extension '(css|gif|ico|js|png|swf|jpe?g)'
}
# Enable features
/0062 { /type "allow" /url "/libs/cq/personalization/*" } # enable personalization
# Deny content grabbing, on all accessible pages, using regular expressions
/0081
{
/type "deny"
/selectors '((sys|doc)view|query|[0-9-]+)'
/extension '(json|xml)'
}
# Deny content grabbing for /content and its subtree
/0082
{
/type "deny"
/path "/content/*"
/selectors '(feed|rss|pages|languages|blueprint|infinity|tidy)'
/extension '(json|xml|html)'
}
# /0087 { /type "allow" /method "GET" /extension 'json' "*.1.json" } # allow one-level json requests
}
Overweeg de volgende aanbevelingen als u verkiest om toegang uit te breiden:
-
Externe toegang tot uitschakelen
/admin
als u CQ-versie 5.4 of een eerdere versie gebruikt. -
Voorzichtigheid is geboden wanneer toegang wordt verleend tot bestanden in
/libs
. Toegang moet op individuele basis worden toegestaan. -
Ontken toegang tot de replicatieconfiguratie zodat kan het niet worden gezien:
/etc/replication.xml*
/etc/replication.infinity.json*
-
Toegang tot de Google Gadgets reverse-proxy weigeren:
/libs/opensocial/proxy*
Afhankelijk van uw installatie kunnen er meer bronnen onder zijn /libs
, /apps
of elders, die beschikbaar moeten worden gesteld. U kunt de access.log
bestand als een methode om te bepalen welke bronnen extern worden benaderd.
/etc/reports
voor externe bezoekers.Query-tekenreeksen beperken restricting-query-strings
Sinds Dispatcher versie 4.1.5 kunt u de /filter
om querytekenreeksen te beperken. Men adviseert uitdrukkelijk vraagkoorden toe te staan en generische toelage door uit te sluiten allow
filterelementen.
Eén item kan een van de volgende glob
of een combinatie van method
, url
, query
, en version
, maar niet beide. In het volgende voorbeeld wordt het volgende a=*
querytekenreeks en ontkent alle andere querytekenreeksen voor URL's die worden omgezet in de /etc
knooppunt:
/filter {
/0001 { /type "deny" /method "POST" /url "/etc/*" }
/0002 { /type "allow" /method "GET" /url "/etc/*" /query "a=*" }
}
/query
, komt het slechts verzoeken aan die een vraagkoord bevatten en het verstrekte vraagpatroon aanpassen./etc
die geen vraagkoord ook zouden moeten worden toegestaan, zouden de volgende regels worden vereist:/filter {
>/0001 { /type "deny" /method "*" /url "/path/*" }
>/0002 { /type "allow" /method "GET" /url "/path/*" }
>/0003 { /type "deny" /method "GET" /url "/path/*" /query "*" }
>/0004 { /type "allow" /method "GET" /url "/path/*" /query "a=*" }
}
Beveiliging van Dispatcher testen testing-dispatcher-security
Dispatcher-filters blokkeren de toegang tot de volgende pagina's en scripts bij AEM publicatie-instanties. Gebruik een webbrowser om te proberen de volgende pagina's te openen zoals een bezoeker van de site zou doen en om te controleren of code 404 wordt geretourneerd. Pas de filters aan als er andere resultaten worden verkregen.
U ziet normale paginerendering voor /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/add_valid_path_to_a_page/jcr:content.feed
/content/add_valid_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_a_page/pagename.sysview.xml
/etc.xml
/content.feed.xml
/content.rss.xml
/content.feed.html
/content/add_valid_page.html?debug=layout
/projects
/tagging
/etc/replication.html
/etc/cloudservices.html
/welcome
Om te bepalen of anonieme schrijf toegang wordt toegelaten, geef het volgende bevel in een terminal of bevelherinnering uit. Het schrijven van gegevens naar het knooppunt moet niet mogelijk zijn.
curl -X POST "https://anonymous:anonymous@hostname:port/content/usergenerated/mytestnode"
Om te proberen om het geheime voorgeheugen van de Verzender ongeldig te maken en ervoor te zorgen dat u code 403 reactie ontvangt, geef het volgende bevel in een terminal of bevelherinnering uit:
curl -H "CQ-Handle: /content" -H "CQ-Path: /content" https://yourhostname/dispatcher/invalidate.cache
Toegang tot URL's met Vanity inschakelen enabling-access-to-vanity-urls-vanity-urls
Configureer de Dispatcher om toegang in te schakelen tot vanity URL's die zijn geconfigureerd voor uw AEM pagina's.
Wanneer toegang tot vanity URLs wordt toegelaten, roept de Verzender periodiek de dienst die op de teruggeeft instantie loopt om een lijst van vanity URLs te verkrijgen. Dispatcher slaat deze lijst op in een lokaal bestand. Wanneer een aanvraag voor een pagina wordt afgewezen vanwege een filter in het dialoogvenster /filter
, raadpleegt Dispatcher de lijst met vanity URL's. Als de ontkende URL in de lijst staat, geeft Dispatcher toegang tot de vanity URL.
Als u toegang tot vanity-URL's wilt inschakelen, voegt u een /vanity_urls
aan de /farms
-sectie, vergelijkbaar met het volgende voorbeeld:
/vanity_urls {
/url "/libs/granite/dispatcher/content/vanityUrls.html"
/file "/tmp/vanity_urls"
/delay 300
}
De /vanity_urls
Deze sectie bevat de volgende eigenschappen:
-
/url
: Het pad naar de service vanity URL die wordt uitgevoerd op de renderinstantie. De waarde van deze eigenschap moet"/libs/granite/dispatcher/content/vanityUrls.html"
. -
/file
: Het pad naar het lokale bestand waarin Dispatcher de lijst met vanity URL's opslaat. Zorg ervoor dat de Dispatcher schrijftoegang heeft tot dit bestand. -
/delay
: (Seconden) De tijd tussen vraag aan de dienst van vanity URL.
Gebruik de volgende procedure om toegang tot vanity URLs toe te laten.
- Als uw renderservice een AEM instantie is, installeert u de
com.adobe.granite.dispatcher.vanityurl.content
op de publicatie-instantie (zie de bovenstaande opmerking). - Voor elke vanity URL die u voor een AEM of CQ-pagina hebt geconfigureerd, controleert u of de
/filter
de URL wordt door de configuratie geweigerd. Voeg zo nodig een filter toe dat de URL weigert. - Voeg de
/vanity_urls
sectie hieronder/farms
. - Start Apache-webserver opnieuw.
Verzoeken om synchronisatie verzenden - /propagateSyndPost
forwarding-syndication-requests-propagatesyndpost
Syndicatieverzoeken zijn alleen bedoeld voor Dispatcher, zodat ze standaard niet naar de renderer worden verzonden (bijvoorbeeld een AEM-instantie).
Indien nodig stelt u de /propagateSyndPost
eigenschap aan "1"
om synchronisatieverzoeken door te sturen naar Dispatcher. Indien ingesteld, moet u ervoor zorgen dat de aanvragen voor POSTEN niet worden afgewezen in de filtersectie.
De Dispatcher-cache configureren - /cache
configuring-the-dispatcher-cache-cache
De /cache
sectie bepaalt hoe de Verzender documenten in cache plaatst. Vorm verscheidene subproperties om uw caching strategieën uit te voeren:
/docroot
/statfile
/serveStaleOnError
/allowAuthorized
/rules
/statfileslevel
/invalidate
/invalidateHandler
/allowedClients
/ignoreUrlParams
/headers
/mode
/gracePeriod
/enableTTL
Een voorbeeldgeheim voorgeheugensectie zou als volgt kunnen kijken:
/cache
{
/docroot "/opt/dispatcher/cache"
/statfile "/tmp/dispatcher-website.stat"
/allowAuthorized "0"
/rules
{
# List of files that are cached
}
/invalidate
{
# List of files that are auto-invalidated
}
}
De cachemap opgeven specifying-the-cache-directory
De /docroot
eigenschap identificeert de map waarin in cache opgeslagen bestanden worden.
De webserver is verantwoordelijk voor het leveren van de juiste statuscode wanneer het cachebestand van de Dispatcher wordt gebruikt. Daarom is het belangrijk dat deze ook kan worden gevonden.
Als u veelvoudige landbouwbedrijven gebruikt, moet elk landbouwbedrijf een verschillende documentwortel gebruiken.
De naam van het statusbestand wijzigen naming-the-statfile
De /statfile
eigenschap identificeert het bestand dat als statfile moet worden gebruikt. Dispatcher gebruikt dit bestand om de tijd van de meest recente inhoudsupdate te registreren. Het statusbestand kan elk bestand op de webserver zijn.
De status heeft geen inhoud. Wanneer de inhoud wordt bijgewerkt, werkt de Dispatcher de tijdstempel bij. De standaardstatus heet .stat
en wordt opgeslagen in de hoofdmap van het document. Dispatcher blokkeert de toegang tot het statfile.
/statfileslevel
is geconfigureerd, negeert de Dispatcher het /statfile
eigenschap en gebruik .stat
als de naam.Stale documenten verzenden als er fouten optreden serving-stale-documents-when-errors-occur
De /serveStaleOnError
property controls whether Dispatcher returns invalidate documents when the render server returns an error. Wanneer een statusbestand wordt aangeraakt en cacheinhoud ongeldig wordt gemaakt, verwijdert de Dispatcher standaard de inhoud in de cache. Deze actie wordt gedaan de volgende tijd het wordt gevraagd.
Indien /serveStaleOnError
is ingesteld op "1"
, wordt ongeldig gemaakte inhoud niet verwijderd uit de cache. Dat wil zeggen, tenzij de renderserver een geslaagde reactie retourneert. Een 5xx-reactie van AEM of een verbindingstijd zorgt ervoor dat de Dispatcher de verouderde inhoud levert en reageert met en HTTP-status 111 (Revalidation Failed).
In cache plaatsen wanneer verificatie wordt gebruikt caching-when-authentication-is-used
De /allowAuthorized
het bezit controleert of de verzoeken die om het even welke volgende authentificatieinformatie bevatten in het voorgeheugen worden opgeslagen:
- De
authorization
header - Een cookie genaamd
authorization
- Een cookie genaamd
login-token
Door gebrek, worden de verzoeken die deze authentificatieinformatie omvatten niet in het voorgeheugen ondergebracht omdat de authentificatie niet wordt uitgevoerd wanneer een caching document aan de cliënt is teruggekeerd. Met deze configuratie voorkomt u dat Dispatcher cachedocumenten kan verzenden aan gebruikers die niet de vereiste rechten hebben.
Als uw vereisten het in cache plaatsen van geverifieerde documenten echter toestaan, stelt u /allowAuthorized
op één:
/allowAuthorized "1"
/sessionmanagement
eigenschap), /allowAuthorized
eigenschap moet worden ingesteld op "0"
.Documenten opgeven om in cache te plaatsen specifying-the-documents-to-cache
De /rules
Deze eigenschap bepaalt welke documenten in de cache worden geplaatst op basis van het documentpad. Ongeacht de /rules
eigenschap, Dispatcher plaatst een document nooit in de cache in de volgende omstandigheden:
-
Verzoek-URI bevat een vraagteken (
?
).- Geeft een dynamische pagina aan, zoals een zoekresultaat dat niet in de cache hoeft te worden opgeslagen.
-
De bestandsextensie ontbreekt.
- De webserver heeft de extensie nodig om het documenttype (het MIME-type) te bepalen.
-
De verificatieheader wordt ingesteld (configureerbaar).
-
Als de AEM instantie met de volgende kopballen antwoordt:
no-cache
no-store
must-revalidate
Elk item in het dialoogvenster /rules
eigenschap omvat een glob
patroon en tekst:
- De
glob
wordt gebruikt om het pad van het document aan te passen. - Het type geeft aan of de documenten die overeenkomen met de
glob
patroon. De waarde kanallow
(het document in cache plaatsen) ofdeny
(geef het document weer).
Als u geen dynamische pagina's hebt (buiten die pagina's die reeds door de bovengenoemde regels worden uitgesloten), kunt u Dispatcher vormen om alles in het voorgeheugen onder te brengen. De sectie Regels ziet er als volgt uit:
/rules
{
/0000 { /glob "*" /type "allow" }
}
Zie voor informatie over Glob-eigenschappen Patronen ontwerpen voor Glob-eigenschappen.
Als er gedeelten van de pagina dynamisch zijn (bijvoorbeeld een nieuwstoepassing) of zich in een gesloten gebruikersgroep bevinden, kunt u uitzonderingen definiëren:
/rules
{
/0000 { /glob "*" /type "allow" }
/0001 { /glob "/en/news/*" /type "deny" }
/0002 { /glob "*/private/*" /type "deny" }
}
Compressie
Op Apache-webservers kunt u de documenten in de cache comprimeren. Met compressie kan Apache het document op verzoek van de client in een gecomprimeerd formulier retourneren. Compressie wordt automatisch uitgevoerd door de Apache-module in te schakelen mod_deflate
, bijvoorbeeld:
AddOutputFilterByType DEFLATE text/plain
De module wordt standaard geïnstalleerd met Apache 2.x.
Bestanden op mapniveau ongeldig maken invalidating-files-by-folder-level
Gebruik de /statfileslevel
eigenschap voor het ongeldig maken van cachebestanden volgens het pad:
-
Dispatcher maakt
.stat
bestanden in elke map van de hoofdmap naar het niveau dat u opgeeft. De documenthoofdmap is niveau 0. -
Bestanden worden ongeldig gemaakt door op de knop
.stat
bestand. De.stat
de laatste wijzigingsdatum van het bestand wordt vergeleken met de laatste wijzigingsdatum van een document in de cache. Het document wordt opnieuw ingesteld als de.stat
is nieuwer. -
Wanneer een bestand op een bepaald niveau ongeldig wordt gemaakt, alles
.stat
bestanden uit de hoofdmap tot het niveau van het ongeldig gemaakte dossier of gevormdstatsfilevel
(de kleinste) wordt aangeraakt.- Als u bijvoorbeeld de instelling
statfileslevel
eigenschap tot en met 6 en een bestand wordt op niveau 5 dan elke.stat
bestand van docroot naar 5 wordt aangeraakt. Als u doorgaat met dit voorbeeld en een bestand op niveau 7 ongeldig wordt gemaakt, wordt elkestat
bestand van docroot naar zes wordt gewijzigd (sinds/statfileslevel = "6"
).
- Als u bijvoorbeeld de instelling
Alleen bronnen langs het pad op het ongeldig gemaakte bestand wordt beïnvloed. Neem het volgende voorbeeld: een website gebruikt de structuur /content/myWebsite/xx/.
Als u statfileslevel
als 3, a .stat
bestand wordt als volgt gemaakt:
docroot
/content
/content/myWebsite
/content/myWebsite/*xx*
Wanneer een bestand in /content/myWebsite/xx
ongeldig is, dan elke .stat
bestand van docroot naar /content/myWebsite/xx
is aangeraakt. Dit scenario geldt alleen voor /content/myWebsite/xx
en niet bijvoorbeeld /content/myWebsite/yy
of /content/anotherWebSite
.
CQ-Action-Scope:ResourceOnly
. Deze methode kan worden gebruikt om bepaalde middelen te spoelen zonder andere delen van het geheime voorgeheugen ongeldig te maken. Zie deze pagina en De Dispatcher-cache handmatig ongeldig maken voor meer informatie./statfileslevel
eigenschap, /statfile
eigenschap wordt genegeerd.Automatisch cachebestanden valideren automatically-invalidating-cached-files
De /invalidate
Deze eigenschap definieert de documenten die automatisch ongeldig worden gemaakt wanneer de inhoud wordt bijgewerkt.
Met automatische ongeldigmaking verwijdert Dispatcher geen in het cachegeheugen opgeslagen bestanden nadat de inhoud is bijgewerkt, maar controleert de geldigheid van deze bestanden op het moment dat ze de volgende keer worden aangevraagd. Documenten in de cache die niet automatisch ongeldig worden gemaakt, blijven in de cache totdat een inhoudsupdate deze expliciet verwijdert.
Automatische validatie wordt doorgaans gebruikt voor HTML-pagina's. HTML-pagina's bevatten vaak koppelingen naar andere pagina's, waardoor het moeilijk is om vast te stellen of een update van de inhoud van invloed is op een pagina. Als u ervoor wilt zorgen dat alle relevante pagina's ongeldig worden gemaakt wanneer de inhoud wordt bijgewerkt, maakt u automatisch alle HTML-pagina's ongeldig. De volgende configuratie maakt alle HTML pagina's ongeldig:
/invalidate
{
/0000 { /glob "*" /type "deny" }
/0001 { /glob "*.html" /type "allow" }
}
Zie voor informatie over Glob-eigenschappen Patronen ontwerpen voor Glob-eigenschappen.
Deze configuratie veroorzaakt de volgende activiteit wanneer /content/wknd/us/en
is geactiveerd:
- Alle bestanden met patroon en.* worden verwijderd uit de
/content/wknd/us
map. - De
/content/wknd/us/en./_jcr_content
map wordt verwijderd. - Alle andere bestanden die overeenkomen met de
/invalidate
configuratie niet onmiddellijk worden verwijderd. Deze bestanden worden verwijderd wanneer de volgende aanvraag wordt uitgevoerd. In het voorbeeld:/content/wknd.html
wordt niet geschrapt; het wordt geschrapt wanneer/content/wknd.html
is aangevraagd.
Als u automatisch gegenereerde PDF- en ZIP-bestanden aanbiedt om te downloaden, moet u deze bestanden mogelijk ook automatisch ongeldig maken. Een configuratievoorbeeld ziet er als volgt uit:
/invalidate
{
/0000 { /glob "*" /type "deny" }
/0001 { /glob "*.html" /type "allow" }
/0002 { /glob "*.zip" /type "allow" }
/0003 { /glob "*.pdf" /type "allow" }
}
De AEM integratie met Adobe Analytics biedt configuratiegegevens in een analytics.sitecatalyst.js
op uw website. Het voorbeeld dispatcher.any
Het bestand dat bij Dispatcher wordt geleverd, bevat de volgende validatieregel voor dit bestand:
{
/glob "*/analytics.sitecatalyst.js" /type "allow"
}
Aangepaste validatiescripts gebruiken using-custom-invalidation-scripts
De /invalidateHandler
Met eigenschap kunt u een script definiëren dat wordt aangeroepen voor elk verzoek tot validatie dat door Dispatcher wordt ontvangen.
De methode wordt aangeroepen met de volgende argumenten:
- Handgreep - Het ongeldig gemaakte inhoudspad
- Handeling - De replicatiehandeling (bijvoorbeeld Activeren, Deactiveren)
- Toepassingsgebied van handeling - Het bereik van de replicatieactie (leeg, tenzij een koptekst van
CQ-Action-Scope: ResourceOnly
wordt verzonden, zie In cache geplaatste pagina's ongeldig maken van AEM voor details)
Deze methode kan worden gebruikt voor verschillende gebruiksgevallen. Bijvoorbeeld het ongeldig maken van andere toepassingsspecifieke geheime voorgeheugens, of het behandelen van gevallen waar extern URL van een pagina, en zijn plaats in het docroot, niet de inhoudspad aanpast.
In het volgende voorbeeldscript worden alle ongeldig gemaakte aanvragen naar een bestand genoteerd.
/invalidateHandler "/opt/dispatcher/scripts/invalidate.sh"
Voorbeeldscript voor validatiehandlers sample-invalidation-handler-script
#!/bin/bash
printf "%-15s: %s %s" $1 $2 $3>> /opt/dispatcher/logs/invalidate.log
De clients beperken die de cache kunnen leegmaken limiting-the-clients-that-can-flush-the-cache
De /allowedClients
eigenschap definieert specifieke clients die de cache mogen leegmaken. De globbende patronen worden aangepast aan IP.
In het volgende voorbeeld:
- toegang tot elke client wordt geweigerd
- verleent uitdrukkelijk toegang tot localhost
/allowedClients
{
/0001 { /glob "*.*.*.*" /type "deny" }
/0002 { /glob "127.0.0.1" /type "allow" }
}
Zie voor informatie over Glob-eigenschappen Patronen ontwerpen voor Glob-eigenschappen.
/allowedClients
.URL-parameters worden genegeerd ignoring-url-parameters
De ignoreUrlParams
In deze sectie wordt gedefinieerd welke URL-parameters worden genegeerd bij het bepalen of een pagina in cache wordt geplaatst of via cache wordt geleverd:
- Wanneer een aanvraag-URL parameters bevat die allemaal worden genegeerd, wordt de pagina in de cache geplaatst.
- Wanneer een aanvraag-URL een of meer parameters bevat die niet worden genegeerd, wordt de pagina niet in de cache opgeslagen.
Wanneer een parameter voor een pagina wordt genegeerd, wordt de pagina in de cache geplaatst de eerste keer dat de pagina wordt aangevraagd. Volgende aanvragen voor de pagina worden naar de pagina in de cache verzonden, ongeacht de waarde van de parameter in het verzoek.
ignoreUrlParams
op de wijze van de lijst van gewenste personen instellen. Als dusdanig, worden alle vraagparameters genegeerd en slechts worden bekende of verwachte vraagparameters vrijgesteld ("ontkend") van wordt genegeerd. Zie voor meer informatie en voorbeelden deze pagina.Om te specificeren welke parameters worden genegeerd, voeg glob regels aan toe ignoreUrlParams
eigenschap:
- Als u een pagina in het cachegeheugen wilt plaatsen, ongeacht de aanvraag die een URL-parameter bevat, maakt u een glob-eigenschap waarmee de parameter kan worden genegeerd.
- Als u wilt voorkomen dat de pagina in de cache wordt opgeslagen, maakt u een glob-eigenschap die de parameter weigert (te negeren).
http://example.com/path/test.html?p1=test&p2=v2
, dan zou de glob eigenschap moeten zijn:/0002 { /glob "p1" /type "allow" }
In het volgende voorbeeld worden door Dispatcher alle parameters genegeerd, behalve de parameters nocache
parameter. Als dusdanig, brengt de Dispatcher nooit verzoek URLs in het voorgeheugen onder die omvatten nocache
parameter:
/ignoreUrlParams
{
# ignore-all-url-parameters-by-dispatcher-and-requests-are-cached
/0001 { /glob "*" /type "allow" }
# allow-the-url-parameter-nocache-to-bypass-dispatcher-on-every-request
/0002 { /glob "nocache" /type "deny" }
}
In de context van de ignoreUrlParams
in het bovenstaande configuratievoorbeeld zorgt de volgende HTTP-aanvraag ervoor dat de pagina in de cache wordt geplaatst omdat de willbecached
parameter wordt genegeerd:
GET /mypage.html?willbecached=true
In de context van de ignoreUrlParams
configuratievoorbeeld, veroorzaakt het volgende HTTP- verzoek de pagina niet in cache worden geplaatst omdat de nocache
parameter wordt niet genegeerd:
GET /mypage.html?nocache=true
GET /mypage.html?nocache=true&willbecached=true
Zie voor informatie over Glob-eigenschappen Patronen ontwerpen voor Glob-eigenschappen.
HTTP-responsheaders in cache plaatsen caching-http-response-headers
De /headers
Met eigenschap kunt u de HTTP-headertypen definiëren die Dispatcher in de cache gaat plaatsen. Op het eerste verzoek aan een middel uncached, worden alle kopballen die één van de gevormde waarden (zie de configuratiemonster hieronder) aanpassen opgeslagen in een afzonderlijk dossier, naast het geheim voorgeheugendossier. Bij verdere verzoeken aan het caching middel, worden de opgeslagen kopballen toegevoegd aan de reactie.
Hieronder ziet u een voorbeeld van de standaardconfiguratie:
/cache {
...
/headers {
"Cache-Control"
"Content-Disposition"
"Content-Type"
"Expires"
"Last-Modified"
"X-Content-Type-Options"
"Last-Modified"
}
}
- Voeg de koptekstnaam toe in het dialoogvenster
/cache/headers
sectie. - Voeg het volgende toe Apache-richtlijn in het gedeelte Verzender:
code language-xml |
---|
|
Machtigingen voor cachebestanden voor verzending dispatcher-cache-file-permissions
De mode
eigenschap bepaalt welke bestandsmachtigingen worden toegepast op nieuwe mappen en bestanden in de cache. De umask
van het aanroepingsproces deze instelling beperkt. Dit is een octaal getal dat wordt samengesteld uit de som van een of meer van de volgende waarden:
0400
Lezen door eigenaar toestaan.0200
Schrijven door eigenaar toestaan.0100
Laat de eigenaar in directory's zoeken.0040
Lezen door groepsleden toestaan.0020
Schrijven door groepsleden toestaan.0010
Groepsleden mogen in de map zoeken.0004
Lezen door anderen toestaan0002
Schrijven door anderen toestaan.0001
Anderen toestaan in de map te zoeken.
De standaardwaarde is 0755
, waarmee de eigenaar de groep en anderen kan lezen, schrijven of doorzoeken.
Startbestand met Throttling .stat aanraken throttling-stat-file-touching
Met de standaardinstelling /invalidate
eigenschap, elke activering maakt alle .html
bestanden (wanneer het pad ervan overeenkomt met het /invalidate
). Op een website met aanzienlijk verkeer verhogen meerdere, daaropvolgende activeringen de CPU-belasting op de achtergrond. In een dergelijk scenario is het wenselijk "vertragen" .stat
het aanraken van bestanden om de website ontvankelijk te houden. U kunt deze handeling uitvoeren met de opdracht /gracePeriod
eigenschap.
De /gracePeriod
eigenschap definieert het aantal seconden dat een standaard, automatisch ongeldig gemaakte resource mogelijk nog steeds uit de cache wordt aangeboden na de laatste activering. De eigenschap kan worden gebruikt in een installatie waarbij een batch activeringen anders de gehele cache herhaaldelijk ongeldig zouden maken. De aanbevolen waarde is 2 seconden.
Zie voor meer informatie /invalidate
en /statfileslevel
eerder.
Op tijd gebaseerde invalidatie van cache configureren - /enableTTL
configuring-time-based-cache-invalidation-enablettl
Op tijd gebaseerde cachevalidatie is afhankelijk van de /enableTTL
en de aanwezigheid van normale verloopheaders van de HTTP-standaard. Als u de eigenschap instelt op 1 (/enableTTL "1"
), worden de antwoordheaders vanaf de achtergrond geëvalueerd. Als de koppen een Cache-Control
, max-age
of Expires
datum, wordt een hulpbestand gemaakt dat leeg is naast het bestand in de cache, waarbij de wijzigingstijd gelijk is aan de vervaldatum. Wanneer het cachebestand na de wijzigingstijd wordt opgevraagd, wordt het automatisch opnieuw opgevraagd vanaf de achtergrond.
Vóór Dispatcher 4.3.5, was de logica van de annulering van TTL gebaseerd slechts op de gevormde waarde van TTL. Met Dispatcher 4.3.5 stelt u beide TTL in en de regels voor het ongeldig maken van het cachegeheugen van Dispatcher worden verwerkt. Voor een bestand in de cache:
- Indien
/enableTTL
is ingesteld op 1, wordt gecontroleerd of het bestand vervalt. Als het bestand volgens de set-TTL is verlopen, worden geen andere controles uitgevoerd en wordt het bestand in de cache opnieuw opgevraagd vanaf de back-end. - Als het bestand niet is verlopen, of
/enableTTL
wordt niet gevormd, dan worden de standaardregels van de geheim voorgeheugenongeldigverklaring toegepast zoals die regels die/statfileslevel
en/invalidate
set. Deze stroom betekent dat de Dispatcher bestanden waarvoor de TTL nog niet is verlopen, ongeldig kan maken.
Deze nieuwe implementatie steunt gebruiksgevallen waar de dossiers langere TTL (bijvoorbeeld, op CDN) hebben. Maar dat dossier kan nog ongeldig worden verklaard zelfs als TTL niet is verlopen. De Dispatcher geeft de voorkeur aan versheid van inhoud boven cache-hit verhouding.
Omgekeerd, voor het geval dat alleen de vervallogica die op een dossier wordt toegepast en dan reeks /enableTTL
naar 1 en sluit dat bestand uit van het standaardmechanisme voor cachevalidatie. U kunt bijvoorbeeld:
- Als u het bestand wilt negeren, configureert u de regels voor ongeldigverklaring in de cachesectie. In het onderstaande fragment worden alle bestanden weergegeven die eindigen in
.example.html
worden genegeerd en verlopen slechts wanneer geplaatst TTL is overgegaan.
/invalidate
{
/0000 { /glob "*" /type "deny" }
/0001 { /glob "*.html" /type "allow" }
/0002 { /glob "*.example.html" /type "deny" }
}
- De inhoudsstructuur zodanig ontwerpen dat u een hoge waarde kunt instellen
/statfilelevel
het bestand wordt dus niet automatisch ongeldig gemaakt.
Zo zorgt u ervoor dat .stat
de bestandsinvalidatie wordt niet gebruikt en alleen de vervaldatum van TTL is actief voor de opgegeven bestanden.
/enableTTL
aan 1 laat TTL caching slechts op de Dispatcher kant toe. Als dusdanig, wordt de informatie van TTL in het extra dossier (zie hierboven) niet verstrekt aan een andere gebruikersagent die om zo een dossiertype van de Dispatcher verzoekt. Als u caching kopballen aan stroomafwaartse systemen zoals CDN of browser wilt verstrekken, zou u moeten vormen /cache/headers
van toepassing.Taakverdeling configureren - /statistics
configuring-load-balancing-statistics
De /statistics
in deze sectie worden categorieën bestanden gedefinieerd waarvoor Dispatcher de responsiviteit van elke rendermethode scoort. Dispatcher gebruikt de scores om te bepalen welke renderen om een aanvraag te verzenden.
Elke categorie die u maakt, definieert een globaal patroon. Dispatcher vergelijkt de URI van de aangevraagde inhoud met deze patronen om de categorie van de gevraagde inhoud te bepalen:
- De volgorde van de categorieën bepaalt de volgorde waarin ze worden vergeleken met de URI.
- Het eerste categoriepatroon dat overeenkomt met de URI is de categorie van het bestand. Er worden niet meer categoriepatronen geëvalueerd.
Dispatcher ondersteunt maximaal acht statistische categorieën. Als u meer dan acht categorieën definieert, worden alleen de eerste 8 gebruikt.
Selectie renderen
Telkens wanneer de Dispatcher een teruggegeven pagina vereist, gebruikt het het volgende algoritme om terug te selecteren:
-
Als de aanvraag de rendernaam bevat in een
renderid
cookie, Dispatcher gebruikt die rendering. -
Als de aanvraag geen
renderid
cookie, Dispatcher vergelijkt de renderstatistieken:- Dispatcher bepaalt de categorie van de aanvraag-URI.
- Dispatcher bepaalt welke rendermethode de laagste responsscore voor die categorie heeft en selecteert die rendermethode.
-
Als er nog geen renderbewerking is geselecteerd, gebruikt u de eerste renderbewerking in de lijst.
De score voor de rendercategorie is gebaseerd op vorige responstijden en eerdere mislukte en succesvolle verbindingen die Dispatcher probeert uit te voeren. Voor elke poging, wordt de score voor de categorie van gevraagde URI bijgewerkt.
Categorieën statistieken definiëren defining-statistics-categories
Definieer een categorie voor elk type document waarvoor u statistieken wilt bijhouden voor de renderselectie. De /statistics
sectie bevat een /categories
sectie. Als u een categorie wilt definiëren, voegt u een regel onder de /categories
sectie met de volgende indeling:
/name { /glob "pattern"}
De categorie name
moet uniek zijn voor het bedrijf. De pattern
wordt beschreven in Patronen ontwerpen voor globale eigenschappen sectie.
Om de categorie van URI te bepalen, vergelijkt de Dispatcher URI met elk categoriepatroon tot een gelijke wordt gevonden. Dispatcher begint met de eerste categorie in de lijst en gaat in de juiste volgorde verder. Plaats daarom eerst categorieën met specifiekere patronen.
Bijvoorbeeld, verzend het gebrek dispatcher.any
wordt een categorie HTML en een categorie Overige gedefinieerd. De categorie HTML is specifieker en verschijnt dus eerst:
/statistics
{
/categories
{
/html { /glob "*.html" }
/others { /glob "*" }
}
}
In het volgende voorbeeld wordt ook een categorie voor zoekpagina's opgenomen:
/statistics
{
/categories
{
/search { /glob "*search.html" }
/html { /glob "*.html" }
/others { /glob "*" }
}
}
Weerspiegelen van serveronbeschikbaarheid in Dispatcher-statistieken reflecting-server-unavailability-in-dispatcher-statistics
De /unavailablePenalty
het bezit plaatst de tijd (in tiende van een seconde) die op teruggeeft statistieken wordt toegepast wanneer een verbinding aan teruggeeft ontbreekt. De verzender voegt de tijd aan de statistiekcategorie toe die gevraagde URI aanpast.
Bijvoorbeeld, wordt de sanctie toegepast wanneer de verbinding TCP/IP aan aangewezen hostname/haven niet kan worden gevestigd. De reden is of omdat AEM niet loopt (en niet luistert) of wegens een netwerk-verwant probleem.
De /unavailablePenalty
eigenschap is een rechtstreeks onderliggend element van het /farm
deel (een verwant van de /statistics
).
Indien niet /unavailablePenalty
eigenschap bestaat, een waarde van "1"
wordt gebruikt.
/unavailablePenalty "1"
Identificatie van een gevoelige verbindingsmap - /stickyConnectionsFor
identifying-a-sticky-connection-folder-stickyconnectionsfor
De /stickyConnectionsFor
eigenschap definieert een map met plakke documenten. Deze eigenschap wordt benaderd via de URL. Dispatcher verzendt alle aanvragen, van één gebruiker in deze map, naar dezelfde renderinstantie. De stevige verbindingen zorgen ervoor dat de zittingsgegevens voor alle documenten aanwezig en verenigbaar zijn. Dit mechanisme gebruikt het renderid
cookie.
In het volgende voorbeeld wordt een kleverige verbinding met de map /products gedefinieerd:
/stickyConnectionsFor "/products"
Wanneer een pagina bestaat uit inhoud van verschillende inhoudsknooppunten, neemt u de /paths
eigenschap die de paden naar de inhoud bevat. Een pagina bevat bijvoorbeeld inhoud van /content/image
, /content/video
, en /var/files/pdfs
. De volgende configuratie laat kleverige verbindingen voor alle inhoud op de pagina toe:
/stickyConnections {
/paths {
"/content/image"
"/content/video"
"/var/files/pdfs"
}
}
httpOnly
httponly
Wanneer kleverige verbindingen worden toegelaten, plaatst de module van de Verzender renderid
cookie. Deze cookie bevat niet de httponly
markering, die moet worden toegevoegd om de veiligheid te verbeteren. U voegt de httponly
markeren door de httpOnly
eigenschap in de /stickyConnections
knooppunt van een dispatcher.any
configuratiebestand. De waarde van de eigenschap (ofwel 0
of 1
) bepaalt of de renderid
cookie HttpOnly
toegevoegd kenmerk. De standaardwaarde is 0
, wat betekent dat het kenmerk niet wordt toegevoegd.
Voor meer informatie over de httponly
markering, lezen deze pagina.
secure
secure
Wanneer kleverige verbindingen worden toegelaten, plaatst de module van de Verzender renderid
cookie. Deze cookie bevat niet de secure
markering, die moet worden toegevoegd om de veiligheid te verbeteren. U voegt de secure
markering die de secure
eigenschap in de /stickyConnections
knooppunt van een dispatcher.any
configuratiebestand. De waarde van de eigenschap (ofwel 0
of 1
) bepaalt of de renderid
cookie secure
toegevoegd kenmerk. De standaardwaarde is 0
, wat betekent dat het kenmerk wordt toegevoegd indien het binnenkomende verzoek is veilig. Als de waarde is ingesteld op 1
, dan wordt de veilige vlag toegevoegd ongeacht of het inkomende verzoek veilig of niet is.
Renderfouten afhandelen handling-render-connection-errors
Vorm het gedrag van de Verzender wanneer teruggeeft de server een fout 500 terugkeert, of niet beschikbaar is.
Een pagina voor een health check opgeven specifying-a-health-check-page
Gebruik de /health_check
eigenschap om een URL op te geven die wordt gecontroleerd wanneer een 500-statuscode plaatsvindt. Als deze pagina ook een 500 statuscode terugkeert, wordt de instantie beschouwd als niet beschikbaar en een configureerbare tijd ( /unavailablePenalty
) wordt toegepast op de renderbewerking voordat opnieuw wordt geprobeerd.
/health_check
{
# Page gets contacted when an instance returns a 500
/url "/health_check.html"
}
De vertraging voor opnieuw proberen van pagina opgeven specifying-the-page-retry-delay
De /retryDelay
het bezit plaatst de tijd (in seconden) dat de Verzender tussen ronde van verbindingspogingen met het landbouwbedrijf teruggeeft. Voor elke ronde, is het maximumaantal tijden de Dispatcher een verbinding aan teruggeeft probeert het aantal teruggeeft in het landbouwbedrijf.
Dispatcher gebruikt de waarde van "1"
indien /retryDelay
is niet expliciet gedefinieerd. De standaardwaarde is meestal juist.
/retryDelay "1"
Het aantal pogingen configureren configuring-the-number-of-retries
De /numberOfRetries
eigenschap stelt het maximumaantal ronde verbindingspogingen in dat Dispatcher met de renders uitvoert. Als Dispatcher na dit aantal keren geen verbinding kan maken met een renderbewerking, retourneert Dispatcher een mislukte reactie.
Voor elke ronde, is het maximumaantal tijden de Dispatcher een verbinding aan teruggeeft probeert het aantal teruggeeft in het landbouwbedrijf. Daarom is het maximumaantal tijden dat de Dispatcher een verbinding probeert ( /numberOfRetries
) x (het aantal renderingen).
Als de waarde niet expliciet wordt gedefinieerd, is de standaardwaarde 5
.
/numberOfRetries "5"
Het mechanisme Failover gebruiken using-the-failover-mechanism
Om verzoeken aan verschillende terug te sturen geeft terug wanneer het originele verzoek ontbreekt, laat het failovermechanisme op uw landbouwbedrijf van de Verzender toe. Wanneer failover wordt toegelaten, heeft de Dispatcher het volgende gedrag:
-
Wanneer een verzoek om terug te geven HTTP Status 503 (UNAVAILABLE) terugkeert, verzendt de Dispatcher het verzoek naar verschillend teruggeven.
-
Wanneer een verzoek aan teruggeeft de Status van HTTP 50x (buiten 503) terugkeert, verzendt de Ontvanger een verzoek voor de pagina die voor wordt gevormd
health_check
eigenschap.- Als de gezondheidscontrole 500 (INTERNAL_SERVER_ERROR) terugkeert, verzendt de Dispatcher het originele verzoek naar verschillende teruggeven.
- Als de gezondheidscontrole HTTP Status 200 terugkeert, keert de Dispatcher de aanvankelijke fout van HTTP 500 aan de cliënt terug.
Om failover toe te laten, voeg de volgende lijn aan het landbouwbedrijf (of de website) toe:
/failover "1"
Expect: 100-continue
verzoek kopbal aan teruggeven alvorens de daadwerkelijke inhoud te spoolen. CQ 5.5 met CQSE beantwoordt dan onmiddellijk met of 100 (CONTINUE) of een foutencode. Ook andere servlet-containers worden ondersteund.Onderbrekingsfouten negeren - /ignoreEINTR
ignoring-interruption-errors-ignoreeintr
Error while reading response: Interrupted system call
Om het even welk systeem georiënteerde dossiervraag kan worden onderbroken EINTR
als het object van de systeemaanroep zich op een extern systeem bevindt dat via NFS wordt benaderd. Of deze systeemvraag uit kan tijd of worden onderbroken is gebaseerd op hoe het onderliggende dossiersysteem op de lokale machine werd opgezet.
Gebruik de /ignoreEINTR
parameter als uw instantie zulk een configuratie heeft en het logboek het volgende bericht bevat:
Error while reading response: Interrupted system call
Intern, leest de Dispatcher de reactie van de verre server (namelijk AEM) gebruikend een lijn die als kan worden vertegenwoordigd:
while (response not finished) {
read more data
}
Dergelijke berichten kunnen worden geproduceerd wanneer EINTR
komt voor in read more data
sectie. De ontvangst van een signaal voordat er gegevens werden ontvangen, is de oorzaak.
Als u dergelijke onderbrekingen wilt negeren, kunt u de volgende parameter toevoegen aan dispatcher.any
(voor /farms
):
/ignoreEINTR "1"
Instelling /ignoreEINTR
tot "1"
zorgt ervoor dat Dispatcher blijft proberen gegevens te lezen totdat de volledige reactie is gelezen. De standaardwaarde is 0
en deactiveert de optie.
Patronen ontwerpen voor Glob-eigenschappen designing-patterns-for-glob-properties
Verschillende secties in het Dispatcher-configuratiebestand gebruiken het glob
eigenschappen als selectiecriteria voor cliëntverzoeken. De waarden van glob
eigenschappen zijn patronen die de Verzender met een aspect van het verzoek, zoals de weg van het gevraagde middel, of het IP adres van de cliënt vergelijkt. De items in het dialoogvenster /filter
sectiegebruik glob
patronen om de paden te identificeren van de pagina's waarop Dispatcher reageert of deze weigert.
De glob
Deze waarden kunnen jokertekens en alfanumerieke tekens bevatten om het patroon te definiëren.
*
Komt overeen met nul of meer aaneengesloten instanties van een willekeurig teken in de tekenreeks. In een van de volgende situaties wordt het uiteindelijke teken van de overeenkomst bepaald:
Een teken in de tekenreeks komt overeen met het volgende teken in het patroon en het patroonteken heeft de volgende kenmerken:
- Geen
*
- Geen
?
- Een letterlijk teken (inclusief een spatie) of een tekenklasse.
- Het einde van het patroon is bereikt.
Binnen een tekenklasse wordt het teken letterlijk geïnterpreteerd.
*/geo*
Komt overeen met elke pagina onder de /content/geometrixx
en de /content/geometrixx-outdoors
knooppunt. De volgende HTTP-aanvragen komen overeen met het globale patroon:
"GET /content/geometrixx/en.html"
"GET /content/geometrixx-outdoors/en.html"
*outdoors/*
Komt overeen met elke pagina onder de /content/geometrixx-outdoors
knooppunt. De volgende HTTP-aanvraag komt bijvoorbeeld overeen met het glob-patroon:
"GET /content/geometrixx-outdoors/en.html"
?
*outdoors/??/*
Komt overeen met de pagina's voor elke taal in de geometrixx-outdoorsite. De volgende HTTP-aanvraag komt bijvoorbeeld overeen met het glob-patroon:
"GET /content/geometrixx-outdoors/en/men.html"
Het volgende verzoek komt niet overeen met het glob-patroon:
- "GET /content/geometrixx-outdoors/en.html"
[ and ]
Een overeenkomst treedt op als het doelteken overeenkomt met een van de tekens in de tekenklasse of binnen een gedefinieerd bereik.
Als de accolade sluiten niet is opgenomen, resulteert het patroon niet in overeenkomende waarden.
*[o]men.html*
Komt overeen met de volgende HTTP-aanvraag:
"GET /content/geometrixx-outdoors/en/women.html"
Deze komt niet overeen met de volgende HTTP-aanvraag:
"GET /content/geometrixx-outdoors/en/men.html"
*[o/]men.html*
Komt overeen met de volgende HTTP-aanvragen:
"GET /content/geometrixx-outdoors/en/women.html"
"GET /content/geometrixx-outdoors/en/men.html"
-
*[m-p]men.html*
Komt overeen met de volgende HTTP-aanvraag:
"GET /content/geometrixx-outdoors/en/women.html"
Deze komt niet overeen met de volgende HTTP-aanvraag:
"GET /content/geometrixx-outdoors/en/men.html"
!
^ wildcard
.Buiten een tekenklasse wordt dit teken letterlijk geïnterpreteerd.
*[ !o]men.html*
Komt overeen met de volgende HTTP-aanvraag:
"GET /content/geometrixx-outdoors/en/men.html"
Deze komt niet overeen met de volgende HTTP-aanvraag:
"GET /content/geometrixx-outdoors/en/women.html"
*[ !o!/]men.html*
Deze komt niet overeen met de volgende HTTP-aanvraag:
"GET /content/geometrixx-outdoors/en/women.html"
of"GET /content/geometrixx-outdoors/en/men. html"
^
!
jokerteken.Buiten een tekenklasse wordt dit teken letterlijk geïnterpreteerd.
!
jokerteken is van toepassing en vervangt het !
tekens in voorbeeldpatronen met ^
tekens.Logboekregistratie logging
In de de serverconfiguratie van het Web, kunt u plaatsen:
- De locatie van het logbestand voor de verzending.
- Het logniveau.
Raadpleeg de documentatie bij de webserver en het Lees mij-bestand van de Dispatcher-instantie voor meer informatie.
Apache-logbestanden met rotatie of pijpleiding
Als u een Apache Webserver, kunt u de standaardfunctionaliteit voor de Omwentelingen van het Logboek, of Pijlt Logboeken, of allebei gebruiken. Bijvoorbeeld, het gebruiken van Pijl Logboeken:
DispatcherLog "| /usr/apache/bin/rotatelogs logs/dispatcher.log%Y%m%d 604800"
Deze functionaliteit roteert automatisch:
- het Dispatcher-logbestand, met een tijdstempel in de extensie (
logs/dispatcher.log%Y%m%d
). - wekelijks (60 x 60 x 24 x 7 = 604800 seconden).
Zie de documentatie van de Server van het Web Apache op de Omwenteling van het Logboek en Pijl-Logboeken. Bijvoorbeeld: Apache 2.4.
Trackregistratie trace-logging
Naast andere verbeteringen voor de Dispatcher, introduceert versie 4.2.0 ook Tracks Logging.
Deze capaciteit is een hoger niveau dan Debug registreren die extra informatie in de logboeken toont. Er wordt logbestanden toegevoegd voor:
- De waarden van de doorgestuurde kopteksten;
- De regel die wordt toegepast voor een bepaalde handeling.
U kunt de Logboekregistratie van het Spoor toelaten door het logboekniveau te plaatsen aan 4
in uw webserver.
Hieronder ziet u een voorbeeld van logboeken waarin overtrekken is ingeschakeld:
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[Host] = "localhost:8443"
[Thu 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 (dispatcher)"
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-For] = "::1"
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-SSL] = "on"
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-SSL-Cipher] = "DHE-RSA-AES256-SHA"
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-SSL-Session-ID] = "ba931f5e4925c2dde572d766fdd436375e15a0fd24577b91f4a4d51232a934ae"
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[X-Forwarded-Port] = "8443"
[Thu Mar 03 16:05:38 2016] [T] [17183] request.headers[Server-Agent] = "Communique-Dispatcher"
En een gebeurtenis wordt geregistreerd wanneer een dossier dat een blokkerende regel aanpast wordt gevraagd:
[Thu Mar 03 14:42:45 2016] [T] [11831] 'GET /content.infinity.json HTTP/1.1' was blocked because of /0082
Basisbewerking bevestigen confirming-basic-operation
U kunt de volgende stappen gebruiken om de basisbewerking en interactie van de webserver, de AEM Dispatcher en de instantie te bevestigen:
-
Stel de
loglevel
tot3
. -
Start de webserver. Zo start u ook de Dispatcher.
-
Start de AEM.
-
Controleer het logboek en de foutendossiers voor uw Webserver en de Verzender.
-
Afhankelijk van uw webserver worden berichten weergegeven zoals:
[Thu May 30 05:16:36 2002] [notice] Apache/2.0.50 (Unix) configured
en[Fri Jan 19 17:22:16 2001] [I] [19096] Dispatcher initialized (build XXXX)
-
-
Surf op de website via de webserver. Bevestig dat de inhoud naar wens wordt weergegeven.
Bijvoorbeeld op een lokale installatie waar AEM op haven loopt4502
en de webserver op80
toegang tot de console van Websites gebruikend allebei:https://localhost:4502/libs/wcm/core/content/siteadmin.html
https://localhost:80/libs/wcm/core/content/siteadmin.html
- De resultaten moeten identiek zijn. Bevestig toegang tot andere pagina's met het zelfde mechanisme.
-
Controleer of de cachemap wordt gevuld.
-
Activeer een pagina om te controleren of de cache correct wordt leeggemaakt.
-
Als alles correct werkt, kunt u de
loglevel
tot0
.
Meerdere verzenders gebruiken using-multiple-dispatchers
In complexe instellingen kunt u meerdere verzenders gebruiken. U kunt bijvoorbeeld het volgende gebruiken:
- één verzender om een website op het Intranet te publiceren
- een tweede verzender, onder een ander adres en met verschillende beveiligingsinstellingen, om dezelfde inhoud op internet te publiceren.
In een dergelijk geval, zorg ervoor dat elk verzoek door slechts één Dispatcher gaat. Een verzender behandelt geen verzoeken die afkomstig zijn van een andere verzender. Zorg er daarom voor dat beide verzenders de AEM website rechtstreeks openen.
Foutopsporing debugging
Bij het toevoegen van de koptekst X-Dispatcher-Info
op een verzoek, beantwoordt de Ontvanger of het doel in het voorgeheugen onder was gebracht, van cachegeheugen teruggekeerd, of helemaal niet in het cachegeheugen kon. De responsheader X-Cache-Info
bevat deze gegevens in leesbare vorm. U kunt deze antwoordkopballen gebruiken om kwesties te zuiveren die reacties impliceren door Dispatcher in het voorgeheugen worden opgenomen.
Deze functionaliteit is niet standaard ingeschakeld, dus voor de responsheader X-Cache-Info
het bedrijf moet de volgende gegevens bevatten om daarin te worden opgenomen:
/info "1"
Bijvoorbeeld:
/farm
{
/mywebsite
{
# Include X-Cache-Info response header if X-Dispatcher-Info is in request header
/info "1"
}
}
Ook de X-Dispatcher-Info
header heeft geen waarde nodig, maar als je curl
voor het testen moet u een waarde opgeven die naar de koptekst wordt verzonden, zoals:
curl -v -H "X-Dispatcher-Info: true" https://localhost/content/wknd/us/en.html
Hieronder ziet u een lijst met de antwoordheaders die X-Dispatcher-Info
retourneert:
- doelbestand in cache geplaatst
Het doelbestand bevindt zich in de cache en de Dispatcher heeft vastgesteld dat het geldig is om het te leveren. - caching
Het doelbestand bevindt zich niet in de cache en de Dispatcher heeft bepaald dat het geldig is om de uitvoer in cache te plaatsen en te leveren. - caching: statusbestand is recenter
Het doelbestand bevindt zich in de cache. Een recentere statusbestand kan de validatie echter wel ongedaan maken. Dispatcher verwijdert het doelbestand, maakt het opnieuw van de uitvoer en levert het. - niet in cache geplaatst: hoofdmap van document bestaat niet
De configuratie van het landbouwbedrijf bevat geen documentwortel (configuratieelementcache.docroot
). - niet in cache geplaatst: pad naar cachebestand is te lang
Het doelbestand - de samenvoeging van het hoofdbestand van het document en het URL-bestand - overschrijdt de langst mogelijke bestandsnaam op het systeem. - niet in cache geplaatst: tijdelijk bestandspad is te lang
De sjabloon voor tijdelijke bestandsnamen overschrijdt de langst mogelijke bestandsnaam op het systeem. Dispatcher maakt eerst een tijdelijk bestand voordat het in de cache opgeslagen bestand wordt gemaakt of overschreven. De tijdelijke bestandsnaam is de naam van het doelbestand met de tekens_YYYYXXXXXX
toegevoegd, waarbij deY
enX
worden vervangen om een unieke naam te maken. - niet in cache geplaatst: aanvraag-URL ontbreekt extensie
De aanvraag-URL heeft geen extensie of er is een pad dat volgt op de bestandsextensie, bijvoorbeeld:/test.html/a/path
. - niet cacheable: verzoek moest een GET of een HEAD zijn
De HTTP-methode is geen GET of HEAD. Dispatcher gaat ervan uit dat de uitvoer dynamische gegevens bevat die niet in de cache mogen worden opgeslagen. - niet in cache geplaatst: verzoek bevat een queryreeks
Het verzoek bevatte een queryreeks. Dispatcher veronderstelt dat de output van het gegeven vraagkoord afhangt en daarom niet geheim voorgeheugen plaatst. - niet in cache geplaatst: sessiebeheer moet worden geverifieerd
Een sessiemanager (de configuratie bevat eensessionmanagement
knoop) regeert het geheime voorgeheugen van het landbouwbedrijf en het verzoek bevatte niet de aangewezen authentificatieinformatie. - niet in cache te plaatsen: aanvraag bevat vergunning
Het landbouwbedrijf wordt niet toegestaan output (allowAuthorized 0
) en het verzoek bevat verificatiegegevens. - niet in cache geplaatst: doel is een map
Het doelbestand is een map. Deze locatie kan wijzen op een conceptuele fout, waarbij een URL en een subURL beide cacheable-uitvoer bevatten. Als een aanvraag bijvoorbeeld/test.html/a/file.ext
komt eerst en bevat cacheable output, kan de Dispatcher niet de output van een volgend verzoek in het voorgeheugen onderbrengen aan/test.html
. - niet in cache geplaatst: verzoek-URL heeft een slash aan het einde
De aanvraag-URL heeft een slash. - niet in cache geplaatst: verzoek-URL ontbreekt in cacheregels
De het geheime voorgeheugenregels van het landbouwbedrijf ontkennen uitdrukkelijk caching de output van één of ander verzoek URL. - niet in cache geplaatst: controle van de vergunning geweigerd toegang
De de vergunningscontrole van het landbouwbedrijf ontkende toegang tot het caching dossier. - niet in cache geplaatst: sessie is ongeldig
Een sessiemanager (configuratie bevat eensessionmanagement
node) regelt het cachegeheugen van de farm en de sessie van de gebruiker is niet of niet langer geldig. - niet in cache geplaatst: reactie bevat
no_cache
De externe server heeft eenDispatcher: no_cache
header, waarbij de Dispatcher wordt verboden de uitvoer in cache te plaatsen. - niet in cache geplaatst: lengte van reactieinhoud is nul
De lengte van de reactie is nul. De verzender maakt geen bestand met een lengte van nul.