Dispatcher-versies zijn onafhankelijk van AEM. U bent mogelijk omgeleid naar deze pagina als u een koppeling naar de Dispatcher-documentatie hebt gevolgd die is ingesloten in de documentatie voor een vorige versie van AEM.
De volgende secties beschrijven hoe te om diverse aspecten van de Verzender te vormen.
Alle elementen van AEM en Dispatcher kunnen in zowel IPv4 als IPv6 netwerken worden geïnstalleerd. Zie IPV4 en IPV6.
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 Dispatcher controleren:
/
.{ }
.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:
Bijvoorbeeld, om het dossier myFarm.any in de /farm configuratie te omvatten gebruik de volgende code:
/farms
{
$include "myFarm.any"
}
De asterisk gebruiken (*
) als een jokerteken om een reeks bestanden op te geven die u wilt opnemen.
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"
}
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"
}
}
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.
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 :
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 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
{
...
}
}
Als u meer dan één gebruikt geef landbouwbedrijf terug, wordt de lijst geëvalueerd bottom-up. Dit is met name van belang bij het bepalen van Virtuele hosts voor uw websites.
Elk landbouwbedrijfbezit kan de volgende kindeigenschappen bevatten:
Eigenschapnaam | Beschrijving |
---|---|
/homepage | Standaardstartpagina (optioneel) (alleen IIS) |
/clientheaders | De headers van de HTTP-client-aanvraag die moeten worden doorgegeven. |
/virtuele hosts | De virtuele gastheren voor dit landbouwbedrijf. |
/sessionmanagement | Ondersteuning voor sessiebeheer en verificatie. |
/renders | De servers die gerenderde pagina's leveren (AEM gewoonlijk exemplaren publiceren). |
/filter | Bepaalt URLs waaraan de Verzender toegang toelaat. |
/vanity_urls | Vormt toegang tot vanity URLs. |
/propagateSyndPost | Steun voor de doorzending van verzoeken om syndicatie. |
/cache | Vormt caching gedrag. |
/statistiek | Statistische categorieën definiëren voor berekeningen van de taakverdeling. |
/stickyConnectionsFor | De map die kleverige documenten bevat. |
/health_check | De URL die moet worden gebruikt om de beschikbaarheid van de server te bepalen. |
/retryDelay | De vertraging voordat een mislukte verbinding opnieuw wordt geprobeerd. |
/unavailablePenalty | Sancties die van invloed zijn op statistieken voor berekeningen voor taakverdeling. |
/failover | Verzend verzoeken opnieuw naar verschillende renders wanneer het oorspronkelijke verzoek ontbreekt. |
/auth_checker | Voor toestemming-gevoelige caching, zie Beveiligde inhoud in cache plaatsen. |
De /homepage
parameter (alleen IIS) werkt niet meer. Gebruik in plaats daarvan de opdracht IIS URL Rewrite Module.
Als u Apache gebruikt, moet u de 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 raadzaam de vlag te gebruiken 'passthrough|PT' (doorlopen naar volgende handler) om de herschrijfmachine te dwingen de uri
gebied van de interne request_rec
structuur aan de waarde van filename
veld.
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 verzendt Dispatcher de standaard HTTP-headers naar de AEM-instantie. In sommige gevallen wilt u mogelijk extra kopteksten doorsturen of specifieke kopteksten verwijderen:
Als u de reeks kopballen aanpast om over te gaan, moet u een uitvoerige lijst van kopballen specificeren, met inbegrip van die die normaal inbegrepen door gebrek zijn.
Voor een Dispatcher-instantie die pagina-activeringsverzoeken voor publicatie-instanties afhandelt, is bijvoorbeeld het volgende vereist: PATH
in de /clientheaders
sectie. De PATH
de kopbal laat communicatie tussen de replicatieagent en de verzender 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"
"if-match"
"if-none-match"
"if-range"
"if-unmodified-since"
"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"
}
De /virtualhosts
eigenschap definieert een lijst met alle combinaties hostname/URI die Dispatcher accepteert voor dit farm. U kunt de asterisk (*
) als jokerteken. Waarden voor de virtualhosts
eigenschap gebruikt de volgende indeling:
[scheme]host[uri][*]
scheme
: (Optioneel) Ofwel https://
of https://.
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.Het volgende voorbeeld van de configuratiehandvatten verzoeken om de .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
{
"*"
}
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:
virtualhosts
en gaat verder naar de lijst met waarden.Dispatcher vindt de best-passende virtuele gastheerwaarde op de volgende manier:
host
de scheme
en de uri
van het verzoek wordt gebruikt.virtualhosts
waarden heeft scheme
en uri
onderdelen die overeenkomen met de scheme
en uri
van het verzoek, de eerste ontmoet virtuele gastheer die aanpast host
van het verzoek wordt gebruikt.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
bezit in het hoogste landbouwbedrijf van uw dispatcher.any
bestand.
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"
}
/renders
{
/hostname "server1.myCompany.com"
/port "80"
}
}
/myCompany
{
/virtualhosts
{
"www.mycompany.com/products/*"
}
/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:
Aanvraag-URL | Opgeloste virtuele host |
---|---|
https://www.mycompany.com/products/gloves.html |
www.mycompany.com/products/ |
https://www.mycompany.com/about.html |
www.mycompany.com |
/allowAuthorized
moet worden ingesteld op "0"
in de /cache
om deze functie in te schakelen.
Creeer een veilige zitting voor toegang tot teruggeven landbouwbedrijf zodat de gebruikers login moeten 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
.
Als gedeelten van uw website verschillende toegangsvereisten gebruiken, moet u meerdere boerderijen definiëren.
/sessionmanagement heeft verschillende subparameters:
/directory (verplicht)
De map waarin de sessiegegevens worden opgeslagen. Als de map niet bestaat, wordt deze gemaakt.
Bij het configureren van de subparameter directory niet verwijzen naar de hoofdmap (/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"
}
De eigenschap /renders definieert de URL waarnaar de afzender 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"
}
}
De volgende voorbeeldsectie /renders identificeert een AEM instantie die op de zelfde computer zoals verzender loopt:
/renders
{
/myRenderer
{
/hostname "127.0.0.1"
/port "4503"
}
}
In het volgende voorbeeld /renders-gedeelte worden renderverzoeken gelijkelijk verdeeld over twee AEM:
/renders
{
/myFirstRenderer
{
/hostname "aem.myCompany.com"
/port "4503"
}
/mySecondRenderer
{
/hostname "127.0.0.1"
/port "4503"
}
}
/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"
Hiermee wordt de time-out volledig verwijderd.
Wanneer de time-out wordt bereikt tijdens het parseren van responsheaders, wordt een HTTP-status van 504 (Bad Gateway) geretourneerd. Als de time-out wordt bereikt terwijl de hoofdtekst van de reactie wordt gelezen, retourneert de Dispatcher de onvolledige reactie op de client, maar verwijdert de Dispatcher alle cachebestanden die mogelijk 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
Het bezit is belangrijk wanneer teruggeven hostname met veelvoudige IP adressen en de gastheer, in antwoord op wordt geassocieerd 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"
Dispatcher gebruikt HTTPS om te communiceren met de AEM instantie. Zie ook 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:
"1"
het zal gastheer-naam op elk verzoek oplossen (de Dispatcher zal nooit om het even welk IP adres in het voorgeheugen onderbrengen). Er kan een lichte prestatiesinvloed toe te schrijven zijn aan de extra vraag die wordt vereist om de gastheerinformatie voor elk verzoek te krijgen.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"
}
}
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
alle aanvragen worden geaccepteerd.
Opmerking: Verzoeken om statfile worden altijd afgewezen.
Zie de Controlelijst voor beveiliging van verzender voor verdere overwegingen wanneer het beperken van toegang gebruikend Dispatcher. Lees ook de Beveiligingschecklist AEM voor extra veiligheidsdetails betreffende uw AEM installatie.
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. U moet een lijst van gewenste personen-strategie gebruiken voor uw /filter
sectie:
Het wordt aanbevolen de cache leeg te maken wanneer de filterregels worden gewijzigd.
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 kan allow
of deny
.
Element van de aanvraagregel: Inclusief /method
, /url
, /query
, of /protocol
en een patroon voor het filtreren verzoeken volgens deze specifieke delen van het verzoek-lijn deel van het HTTP- verzoek. 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.
Voor meer informatie over welk deel van de verzoeklijn elk van deze elementenverwijzingen, zie URL-decompositie in verkoop wiki-pagina.
/glob
eigenschap wordt gebruikt om overeen te komen met de gehele request-line van de HTTP-aanvraag.Filteren met globs is afgekeurd in Dispatcher. Als zodanig moet u voorkomen dat globals in de /filter
secties omdat dit tot beveiligingsproblemen kan leiden. Dus in plaats van:
/glob "* *.css *"
moet u
/url "*.css"
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>
In uw patronen moet rekening worden gehouden met de spatietekens in de request-line en de spatietekens in de <CRLF>
tekens.
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.
In de versies van de Verzender later dan 4.2.0, kunt u POSIX Uitgebreide Reguliere Uitdrukkingen in uw filterpatronen omvatten.
Als de filters niet worden geactiveerd zoals u zou verwachten, schakelt u Trackregistratie op verzender zodat kunt u zien welk filter het verzoek onderschept.
In de volgende voorbeeldfiltersectie worden aanvragen voor alle bestanden door Dispatcher afgewezen. U zou toegang tot alle dossiers moeten ontkennen en dan toegang tot specifieke gebieden toestaan.
/0001 { /glob "*" /type "deny" }
Verzoeken naar een expliciet geweigerd gebied hebben tot gevolg dat een foutcode van 404 (pagina niet gevonden) wordt geretourneerd.
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" }
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" }
}
In het volgende voorbeeld wordt een filter getoond dat wordt gebruikt om externe toegang tot de workflowconsole te weigeren:
/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 dit ook aan uw filterdefinitie worden toegevoegd.
/0003 { /type "deny" /url "/publish/libs/cq/workflow/content/console/archive*" }
Als u binnen het beperkte gebied nog steeds toegang moet hebben tot enkele pagina's, kunt u deze toegankelijk maken. Voeg bijvoorbeeld de volgende sectie toe om toegang tot het tabblad Archiveren in de workflowconsole toe te staan:
/0004 { /type "allow" /url "/libs/cq/workflow/content/console/archive*" }
Wanneer meerdere filterpatronen van toepassing zijn op een aanvraag, is het laatste filterpatroon dat van toepassing is, effectief.
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)' }
Hieronder ziet u een regelvoorbeeld waarin wordt voorkomen dat inhoud wordt opgehaald uit het /content
pad en de substructuur ervan, met filters voor pad, kiezers en extensies:
/006 {
/type "deny"
/path "/content/*"
/selectors '(feed|rss|pages|languages|blueprint|infinity|tidy)'
/extension '(json|xml|html)'
}
Wanneer het vormen van Dispatcher zou u externe toegang zoveel mogelijk moeten beperken. 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 te controleren of uw AEM 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 (er worden opmerkingen achtergelaten), moet u voorzichtig zijn als u besluit een van deze activeert (door het verwijderen van de #
op die lijn) aangezien dit een effect op de veiligheid kan hebben.
U zou toegang tot alles moeten ontkennen, dan toegang tot specifieke (beperkte) elementen toestaan:
/filter
{
# Deny everything first and then allow specific entries
/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*" } # 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
}
Wanneer u Apache gebruikt, ontwerpt u uw filter-URL-patronen volgens de eigenschap DispatcherUseProcinedURL van de module Dispatcher. (Zie Apache Web Server - Uw Apache Web Server voor Dispatcher configureren.)
Filters 0030
en 0031
met betrekking tot Dynamic Media van toepassing zijn op AEM 6.0 en hoger.
Overweeg de volgende aanbevelingen als u verkiest om toegang uit te breiden:
Externe toegang tot /admin
moet altijd volledig uitgeschakeld 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 zijn er mogelijk extra bronnen onder /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.
De toegang tot consoles en folders kan een veiligheidsrisico voor productiemilieu's vormen. Tenzij u expliciete redenen hebt, moeten ze gedeactiveerd blijven (gemarkeerd als commentaar).
Als u rapporten gebruiken in een publicatieomgeving u zou Dispatcher moeten vormen om toegang te ontkennen aan /etc/reports
voor externe bezoekers.
Sinds Dispatcher versie 4.1.5 kunt u de /filter
om querytekenreeksen te beperken. Het wordt hoogst geadviseerd uitdrukkelijk vraagkoorden toe te staan en generische toelage door uit te sluiten allow
filterelementen.
Een enkele vermelding kan glob
of een combinatie van method
, url
, query
, en version
, maar niet beide. In het volgende voorbeeld wordt het 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=*" }
}
Als een regel een /query
, zal het slechts verzoeken aanpassen die een vraagkoord bevatten en het verstrekte vraagpatroon aanpassen.
In het bovenstaande voorbeeld geldt dat als /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=*" }
}
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 403 wordt geretourneerd. Pas de filters aan als er andere resultaten worden verkregen.
Let erop dat u normale rendering van pagina's moet zien 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
Geef het volgende bevel in een terminal of bevelherinnering uit om te bepalen of de anonieme schrijftoegang wordt toegelaten. U zou geen gegevens aan de knoop moeten kunnen schrijven.
curl -X POST "https://anonymous:anonymous@hostname:port/content/usergenerated/mytestnode"
Geef het volgende bevel in een terminal of bevelherinnering uit om te proberen om het geheime voorgeheugen van de Verzender ongeldig te maken, en ervoor te zorgen dat u code 404 reactie ontvangt:
curl -H "CQ-Handle: /content" -H "CQ-Path: /content" https://yourhostname/dispatcher/invalidate.cache
Configureer 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 waar Dispatcher de lijst met vanity-URL's opslaat. Zorg ervoor dat Dispatcher schrijftoegang heeft tot dit bestand.
/delay
: (Seconden) De tijd tussen vraag aan de dienst van vanity URL.
Als de rendermethode een instantie van AEM is, moet u de VanityURLS-Components-pakket van softwaredistributie om de service vanity URL in te schakelen. (Zie Softwaredistributie voor meer informatie .)
Gebruik de volgende procedure om toegang tot vanity URLs toe te laten.
com.adobe.granite.dispatcher.vanityurl.content
op de publicatie-instantie (zie de bovenstaande opmerking)./filter
de URL wordt door de configuratie geweigerd. Voeg zo nodig een filter toe dat de URL weigert./vanity_urls
sectie hieronder /farms
.Syndicatieverzoeken zijn gewoonlijk 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 /cache
sectie bepaalt hoe de Verzender documenten in cache plaatst. Vorm verscheidene sub-eigenschappen 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
}
}
Voor plaatsen met bevoegdheid, lezen Beveiligde inhoud in cache plaatsen.
De /docroot
eigenschap identificeert de map waarin in cache opgeslagen bestanden worden.
De waarde moet precies hetzelfde pad hebben als de hoofdmap van het document van de webserver, zodat de zender en de webserver dezelfde bestanden verwerken.
De webserver is verantwoordelijk voor het leveren van de juiste statuscode wanneer het cachebestand van de verzender wordt gebruikt. Daarom is het belangrijk dat de server deze code ook kan vinden.
Als u veelvoudige landbouwbedrijven gebruikt, moet elk landbouwbedrijf een verschillende documentwortel gebruiken.
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 Dispatcher de tijdstempel bij. De standaardstatus heet .stat
en wordt opgeslagen in de hoofdmap van het document. Dispatcher blokkeert de toegang tot het statfile.
Indien /statfileslevel
is geconfigureerd, negeert de Dispatcher het /statfile
eigenschap en gebruik .stat
als de naam.
De /serveStaleOnError
De eigenschap bepaalt of Dispatcher ongeldig gemaakte documenten retourneert wanneer de renderserver een fout retourneert. Wanneer een statusbestand wordt aangeraakt en cacheinhoud ongeldig wordt gemaakt, verwijdert Dispatcher de inhoud in de cache de volgende keer dat deze wordt opgevraagd.
Indien /serveStaleOnError
is ingesteld op "1"
, Verwijdert Dispatcher geen ongeldig gemaakte inhoud uit het cachegeheugen, tenzij de renderserver een succesvol antwoord retourneert. Een 5xx-reactie van AEM of een verbindingstijd zorgt ervoor dat Dispatcher de verouderde inhoud levert en reageert met en HTTP-status van 111 (Revalidation Failed).
De /allowAuthorized
het bezit controleert of de verzoeken die om het even welke volgende authentificatieinformatie bevatten in het voorgeheugen worden opgeslagen:
authorization
headerauthorization
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"
Om zittingsbeheer toe te laten (gebruikend /sessionmanagement
eigenschap), de /allowAuthorized
eigenschap moet worden ingesteld op "0"
.
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:
Als de aanvraag-URI een vraagteken bevat (?
).
De bestandsextensie ontbreekt.
De authentificatiekopbal wordt geplaatst (dit kan worden gevormd).
Als de AEM instantie met de volgende kopballen antwoordt:
no-cache
no-store
must-revalidate
De methoden GET of HEAD (voor de HTTP-header) kunnen door de Dispatcher in cache worden geplaatst. Zie voor meer informatie over het in cache plaatsen van responsheaders de HTTP-responsheaders in cache plaatsen sectie.
Elk item in het dialoogvenster /rules
eigenschap omvat een glob
patroon en tekst:
glob
wordt gebruikt om het pad van het document aan te passen.glob
patroon. De waarde kan toestaan (het document in cache plaatsen) of weigeren (het document altijd weergeven) zijn.Als u geen dynamische pagina's hebt (buiten die reeds uitgesloten door de bovengenoemde regels), kunt u Dispatcher vormen om alles in het voorgeheugen onder te brengen. De sectie Regels hiervoor ziet er als volgt uit:
/rules
{
/0000 { /glob "*" /type "allow" }
}
Voor informatie over eigenschappen van glob raadpleegt u Patronen ontwerpen voor globale eigenschappen.
Als er gedeelten van de pagina dynamisch zijn (bijvoorbeeld een nieuwstoepassing) of zich in een gesloten gebruikersgroep bevinden, kunt u uitzonderingen definiëren:
Gesloten gebruikersgroepen mogen niet in de cache worden geplaatst omdat gebruikersrechten niet worden gecontroleerd op pagina's in de cache.
/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.
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 hoofdmap van het document 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 opgehaald als de .stat
is nieuwer.
Wanneer een bestand op een bepaald niveau ongeldig wordt gemaakt, wordt alles .stat
bestanden uit de hoofdmap tot het niveau van het ongeldig gemaakte dossier of gevormd statsfilevel
(de kleinste) wordt aangeraakt.
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 dan elke ongeldig wordt gemaakt. stat
bestand van docroot naar 6 wordt gewijzigd (sinds /statfileslevel = "6"
).Alleen bronnen langs het pad op het ongeldig gemaakte bestand wordt beïnvloed. Bekijk 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
wordt vervolgens elke .stat
bestand van docroot naar /content/myWebsite/xx
is aangeraakt. Dit geldt alleen voor /content/myWebsite/xx
en niet bijvoorbeeld /content/myWebsite/yy
of /content/anotherWebSite
.
Ongeldige validatie kan worden voorkomen door een extra koptekst te verzenden CQ-Action-Scope:ResourceOnly
. Dit 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.
Als u een waarde voor de /statfileslevel
eigenschap, de /statfile
eigenschap wordt genegeerd.
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 opgevraagd. Documenten in de cache die niet automatisch worden ongeldig 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. Met de volgende configuratie worden alle HTML-pagina's ongeldig gemaakt:
/invalidate
{
/0000 { /glob "*" /type "deny" }
/0001 { /glob "*.html" /type "allow" }
}
Voor informatie over eigenschappen van glob raadpleegt u Patronen ontwerpen voor globale eigenschappen.
Deze configuratie veroorzaakt de volgende activiteit wanneer /content/wknd/us/en
is geactiveerd:
/content/wknd/us
map./content/wknd/us/en./_jcr_content
map wordt verwijderd./invalidate
configuratie niet onmiddellijk worden verwijderd. Deze bestanden worden verwijderd wanneer de volgende aanvraag wordt uitgevoerd. In ons voorbeeld /content/wknd.html
wordt niet verwijderd, maar wordt verwijderd wanneer /content/wknd.html
is aangevraagd.Als u automatisch gegenereerde PDF- en ZIP-bestanden aanbiedt om te downloaden, moet u deze mogelijk ook automatisch ongeldig maken. Een configuratievoorbeeld ziet dit 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"
}
De /invalidateHandler
staat u toe om een manuscript te bepalen dat voor elk ongeldigingsverzoek wordt geroepen dat door Dispatcher wordt ontvangen.
De methode wordt aangeroepen met de volgende argumenten:
CQ-Action-Scope: ResourceOnly
wordt verzonden, zie In cache geplaatste pagina's ongeldig maken van AEM voor details)Dit kan worden gebruikt om een aantal verschillende gebruiksgevallen te behandelen, zoals het ongeldig maken van andere toepassings specifieke geheime voorgeheugens, of om gevallen te behandelen waar extern URL van een pagina en zijn plaats in de documentwortel niet de inhoudspad aanpassen.
In het onderstaande voorbeeld wordt elk verzoek om validatie aan een bestand genoteerd.
/invalidateHandler "/opt/dispatcher/scripts/invalidate.sh"
#!/bin/bash
printf "%-15s: %s %s" $1 $2 $3>> /opt/dispatcher/logs/invalidate.log
De /allowedClients
eigenschap definieert specifieke clients die de cache mogen leegmaken. De globbende patronen worden aangepast aan IP.
In het volgende voorbeeld:
/allowedClients
{
/0001 { /glob "*.*.*.*" /type "deny" }
/0002 { /glob "127.0.0.1" /type "allow" }
}
Voor informatie over eigenschappen van glob raadpleegt u Patronen ontwerpen voor globale eigenschappen.
U wordt aangeraden de /allowedClients
.
Als dit niet wordt gedaan, kan om het even welke cliënt een vraag uitgeven om het geheime voorgeheugen te ontruimen; als dit herhaaldelijk wordt gedaan kan het de plaatsprestaties ernstig beïnvloeden.
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 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 op de pagina in de cache geplaatst, ongeacht de waarde van de parameter in het verzoek.
Om te specificeren welke parameters worden genegeerd, voeg glob regels aan toe ignoreUrlParams
eigenschap:
In het volgende voorbeeld wordt door Dispatcher het dialoogvenster q
parameter, zodat request-URL's die de parameter q bevatten in de cache worden opgeslagen:
/ignoreUrlParams
{
/0001 { /glob "*" /type "deny" }
/0002 { /glob "q" /type "allow" }
}
Het voorbeeld gebruiken ignoreUrlParams
waarde, zorgt de volgende HTTP-aanvraag ervoor dat de pagina in de cache wordt geplaatst omdat de q
parameter wordt genegeerd:
GET /mypage.html?q=5
Het voorbeeld gebruiken ignoreUrlParams
waarde, de volgende HTTP-aanvraag zorgt ervoor dat de pagina niet worden in cache geplaatst omdat de p
parameter wordt niet genegeerd:
GET /mypage.html?q=5&p=4
Voor informatie over eigenschappen van glob raadpleegt u Patronen ontwerpen voor globale eigenschappen.
Deze functie is beschikbaar in versie 4.1.11. van de verzender.
De /headers
staat u toe om de kopbaltypes te bepalen van HTTP die door de Dispatcher in het voorgeheugen zullen worden opgenomen. 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"
}
}
Houd er ook rekening mee dat globbingtekens niet zijn toegestaan. Zie voor meer informatie Patronen ontwerpen voor globale eigenschappen.
Als u Dispatcher nodig hebt om de eBay-antwoordheaders van AEM op te slaan en te leveren, doet u het volgende:
/cache/headers
sectie.FileETag none
De mode
eigenschap bepaalt welke bestandsmachtigingen worden toegepast op nieuwe mappen en bestanden in de cache. Deze instelling wordt beperkt door de umask
van het aanroepingsproces. 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 zoeken in mappen.0040
Lezen door groepsleden toestaan.0020
Schrijven door groepsleden toestaan.0010
Groepsleden mogen in de map zoeken.0004
Lezen door anderen toestaan.0002
Schrijven door anderen toestaan.0001
Anderen toestaan in de map te zoeken.De standaardwaarde is 0755
waarmee de eigenaar kan lezen, schrijven of zoeken en de groep en anderen kan lezen of zoeken.
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 zullen meerdere, daaropvolgende activeringen de CPU-belasting op de achtergrond verhogen. In een dergelijk scenario zou het wenselijk zijn om te "vertragen" .stat
het aanraken van bestanden om de website ontvankelijk te houden. U kunt dit doen door /gracePeriod
eigenschap.
De /gracePeriod
eigenschap definieert het aantal seconden dat een niet-gevalideerde, niet-gevalideerde resource mogelijk nog steeds uit de cache wordt geladen 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.
Lees voor meer informatie ook de /invalidate
en /statfileslevel
bovenstaande secties.
Indien ingesteld, wordt /enableTTL
eigenschap evalueert de antwoordheaders vanaf de achtergrond en als deze een Cache-Control
de maximumleeftijd of Expires
datum, wordt een hulpdossier, leeg dossier naast het geheim voorgeheugendossier gecreeerd, met wijzigingstijd gelijk aan de vervaldatum. Wanneer het cachebestand na de wijzigingstijd wordt opgevraagd, wordt het automatisch opnieuw opgevraagd vanaf de achtergrond.
Deze functie is beschikbaar in versie 4.1.11. of later van de Dispatcher.
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:
Dispatcher ondersteunt maximaal 8 statistische categorieën. Als u meer dan 8 categorieën definieert, worden alleen de eerste 8 gebruikt.
Selectie renderen
Telkens wanneer 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:
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.
Als u geen taakverdeling gebruikt, kunt u deze sectie weglaten.
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 behoudt de volgorde van de punten. 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 "*" }
}
}
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, of omdat AEM niet loopt (en niet luistert) of wegens een netwerk-gerelateerd 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"
De /stickyConnectionsFor
eigenschap definieert een map die plakke documenten bevat; Dit wordt geopend via de URL. Dispatcher verzendt alle aanvragen, van één gebruiker, die zich in deze map bevinden 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"
}
}
Als kleverige verbindingen zijn ingeschakeld, stelt de verzendingsmodule de renderid
cookie. Deze cookie heeft niet de httponly
markering, die moet worden toegevoegd om de veiligheid te verbeteren. U kunt dit doen 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.
Als kleverige verbindingen zijn ingeschakeld, stelt de verzendingsmodule de renderid
cookie. Deze cookie heeft niet de secure
markering, die moet worden toegevoegd om de veiligheid te verbeteren. U kunt dit doen door 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 zal de veilige vlag worden toegevoegd ongeacht of het inkomende verzoek veilig of niet is.
Vorm het gedrag van de Verzender wanneer teruggeeft de server een fout 500 terugkeert, of niet beschikbaar is.
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 rendering voordat het opnieuw wordt geprobeerd.
/health_check
{
# Page gets contacted when an instance returns a 500
/url "/health_check.html"
}
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 Verzender probeert een verbinding aan terug te geven het aantal teruggeeft in het landbouwbedrijf.
Dispatcher gebruikt de waarde "1"
indien /retryDelay
niet expliciet gedefinieerd. De standaardwaarde is in de meeste gevallen geschikt.
/retryDelay "1"
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 Verzender probeert een verbinding aan terug te geven het aantal teruggeeft in het landbouwbedrijf. Daarom is het maximumaantal tijden dat de Verzender een verbinding probeert ( /numberOfRetries
) x (het aantal renderingen).
Als de waarde niet expliciet wordt gedefinieerd, is de standaardwaarde 5
.
/numberOfRetries "5"
Laat het failovermechanisme op uw landbouwbedrijf van de Verzender toe om verzoeken aan verschillende terug te zenden wanneer het originele verzoek ontbreekt. Wanneer failover wordt toegelaten, heeft de Dispatcher het volgende gedrag:
health_check
eigenschap.
Om failover toe te laten, voeg de volgende lijn aan het landbouwbedrijf (of de website) toe:
/failover "1"
Om HTTP- verzoeken opnieuw te proberen die een lichaam bevatten, verzendt de Dispatcher een 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. Andere servletcontainers zouden dit ook moeten steunen.
Deze optie is gewoonlijk niet nodig. U hoeft dit alleen te gebruiken wanneer u de volgende logberichten ziet:
Error while reading response: Interrupted system call
Om het even welk systeem georiënteerd van het dossiersysteem kan systeemvraag worden onderbroken EINTR
als het voorwerp van de systeemvraag op een ver systeem wordt gevestigd dat via NFS wordt betreden. 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 Dispatcher de reactie van de externe server (d.w.z. AEM) met een lus die kan worden weergegeven als:
while (response not finished) {
read more data
}
Dergelijke berichten kunnen worden geproduceerd wanneer EINTR
komt voor in " read more data
" en worden veroorzaakt door de ontvangst van een signaal voordat gegevens werden ontvangen.
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.
Verschillende secties in het configuratiebestand Dispatcher worden gebruikt 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.
Jokerteken | Beschrijving | Voorbeelden |
---|---|---|
* |
Komt overeen met nul of meer aaneengesloten instanties van een willekeurig teken in de tekenreeks. Het uiteindelijke teken van de overeenkomst wordt bepaald door een van de volgende situaties: Een teken in de tekenreeks komt overeen met het volgende teken in het patroon en het patroonteken heeft de volgende kenmerken:
|
*/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:
*outdoors/* Komt overeen met elke pagina onder de /content/geometrixx-outdoors knooppunt. De volgende HTTP-aanvraag komt bijvoorbeeld overeen met het glob-patroon:
|
? |
Komt overeen met elk willekeurig enkel teken. Gebruik externe tekenklassen. Binnen een tekenklasse wordt dit teken letterlijk geïnterpreteerd. | *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:
Het volgende verzoek komt niet overeen met het glob-patroon:
|
[ and ] |
Hiermee wordt het begin en einde van een tekenklasse gedemonstreerd. Tekenklassen kunnen een of meer tekenbereiken en enkele tekens bevatten. 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:
Komt niet overeen met de volgende HTTP-aanvraag:
*[o/]men.html* Komt overeen met de volgende HTTP-aanvragen:
|
- |
Geeft een tekenbereik aan. Voor gebruik in tekenklassen. Buiten een tekenklasse wordt dit teken letterlijk geïnterpreteerd. | *[m-p]men.html* Komt overeen met de volgende HTTP-aanvraag:
|
! |
Hiermee wordt het volgende teken of de volgende tekenklasse genegeerd. Alleen gebruiken voor negerende tekens en tekenbereiken binnen tekenklassen. Equivalent met de ^ wildcard . Buiten een tekenklasse wordt dit teken letterlijk geïnterpreteerd. |
*[ !o]men.html* Komt overeen met de volgende HTTP-aanvraag:
Komt niet overeen met de volgende HTTP-aanvraag:
*[ !o!/]men.html* Komt niet overeen met de volgende HTTP-aanvraag:
|
^ |
Hiermee wordt het volgende teken- of tekenbereik genegeerd. Wordt gebruikt voor het negeren van alleen tekens en tekenbereiken binnen tekenklassen. Equivalent met de ! jokerteken. Buiten een tekenklasse wordt dit teken letterlijk geïnterpreteerd. |
De voorbeelden van de ! jokerteken is van toepassing en vervangt het ! tekens in voorbeeldpatronen met ^ tekens. |
In de webserverconfiguratie kunt u instellen:
Raadpleeg de documentatie bij de webserver en het Lees mij-bestand van de Dispatcher-instantie voor meer informatie.
Apache geroteerd / Logbestanden met pijplijnen
Als u een Apache webserver kunt u de standaardfunctionaliteit gebruiken voor geroteerde en/of gepipetteerde logbestanden. Bijvoorbeeld met behulp van stammen met buizen:
DispatcherLog "| /usr/apache/bin/rotatelogs logs/dispatcher.log%Y%m%d 604800"
Dit wordt automatisch geroteerd:
logs/dispatcher.log%Y%m%d
).Raadpleeg de documentatie bij de Apache-webserver over logrotatie en pijpleidingen. bijvoorbeeld Apache 2.4.
Op installatie is het standaardlogboekniveau hoog (d.w.z. niveau 3 = zuivert), zodat de Dispatcher alle fouten en waarschuwingen registreert. Dit is zeer nuttig in de eerste stadia.
Dit vereist echter extra bronnen, dus wanneer de Dispatcher probleemloos werkt volgens uw vereisten kunt (moet) u het logniveau verlagen.
Naast andere verbeteringen voor de Dispatcher, introduceert versie 4.2.0 ook Tracks Logging.
Dit is een hoger niveau dan Debug registreren, die extra informatie in de logboeken tonen. Er wordt logbestanden toegevoegd voor:
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 die wordt geregistreerd wanneer een dossier dat een het blokkeren 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
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
tot 3
.
Start de webserver; hiermee begint ook de Dispatcher.
Start de AEM.
Controleer het logboek en de foutendossiers voor uw Webserver en de Verzender.
[Thu May 30 05:16:36 2002] [notice] Apache/2.0.50 (Unix) configured
and[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 loopt 4502
en de webserver op 80
toegang tot de console Websites gebruikend allebei:
https://localhost:4502/libs/wcm/core/content/siteadmin.html
https://localhost:80/libs/wcm/core/content/siteadmin.html
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
tot 0
.
In complexe instellingen kunt u meerdere verzenders gebruiken. U kunt bijvoorbeeld het volgende gebruiken:
In een dergelijk geval, zorg ervoor dat elk verzoek door slechts één Dispatcher gaat. Een Dispatcher behandelt geen verzoeken die afkomstig zijn van een andere Dispatcher. Zorg er daarom voor dat beide verzenders de AEM website rechtstreeks openen.
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 in volgorde van 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 om de koptekst te verzenden, 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:
cache.docroot
)._YYYYXXXXXX
toegevoegd, waarbij de Y
en X
wordt vervangen om een unieke naam te maken./test.html/a/path
.sessionmanagement
knoop) en het verzoek bevatte niet de aangewezen authentificatieinformatie.allowAuthorized 0
) en het verzoek bevat verificatiegegevens./test.html/a/file.ext
komt eerst en bevat cacheable output, zal de verzender niet de output van een volgend verzoek kunnen in het voorgeheugen onderbrengen aan /test.html
.sessionmanagement
en de sessie van de gebruiker is niet of niet meer geldig.no_cache
Dispatcher: no_cache
header, waarbij de verzender de uitvoer niet in cache mag plaatsen.