diff --git a/changes.xml b/changes.xml
index ebe2e5f..f88526c 100644
--- a/changes.xml
+++ b/changes.xml
@@ -24,7 +24,7 @@
-
+
Role aem-dispatcher-cloud: Sync with default dispatcher configuration from Adobe AEM project archetype 40 to 47.
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/available_vhosts/default.vhost b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/available_vhosts/default.vhost
index f54fc8c..e284b20 100644
--- a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/available_vhosts/default.vhost
+++ b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/available_vhosts/default.vhost
@@ -60,12 +60,6 @@ Include conf.d/variables/custom.vars
# Rewrite index page internally, pass through (PT)
RewriteRule "^(/?)$" "/index.html" [PT]
-
- # Content Services/Sling Model Exporter: Cache for 5min with background refresh 1h on browser and 12h on CDN to avoid MISS
-
- Header set Cache-Control "max-age=300,stale-while-revalidate=3600" "expr=%{REQUEST_STATUS} < 400"
- Header set Surrogate-Control "stale-while-revalidate=43200,stale-if-error=43200" "expr=%{REQUEST_STATUS} < 400"
- Header set Age 0
-
+
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/dispatcher_vhost.conf b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/dispatcher_vhost.conf
index 744fe9b..3e48cfb 100644
--- a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/dispatcher_vhost.conf
+++ b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/dispatcher_vhost.conf
@@ -14,11 +14,11 @@ Include conf.d/variables/global.vars
# WARNING!!! The probe paths below are INTERNAL and RESERVED - please DO NOT USE them in your virtual host configurations!
# Liveness probe URL
-Alias "/system/probes/live" /etc/httpd/probes/live-status.json
+Alias "/system/probes/live" probes/live-status.json
# Readiness probe URL
-Alias "/system/probes/ready" /etc/httpd/probes/ready-status.json
+Alias "/system/probes/ready" probes/ready-status.json
# Startup probe URL
-Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
+Alias "/system/probes/start" probes/startup-status.json
# internal probes endpoint
@@ -54,31 +54,18 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
-# SITES-5185 - Ensure all GraphQL Queries to production publisher are using Persistent Queries and not direct query requests
-
- SSLProxyEngine on
-
- RewriteCond %{ENV:ENABLE_GRAPHQL_ENDPOINT} ^$ [OR]
- RewriteCond %{ENV:ENABLE_GRAPHQL_ENDPOINT} ^false$
- RewriteRule ^/(.*)$ - [R=404,L]
-
-
-
- SSLProxyEngine on
-
- RewriteCond %{ENV:ENABLE_GRAPHQL_ENDPOINT} ^$ [OR]
- RewriteCond %{ENV:ENABLE_GRAPHQL_ENDPOINT} ^false$
- RewriteRule ^/(.*)$ - [R=404,L]
-
-
-
# If the module loads correctly then apply base settings for the module
# location of the configuration file. eg: 'conf/dispatcher.any'
DispatcherConfig conf.dispatcher.d/dispatcher.any
# Format for the dispatcher log file
- LogFormat "%t \"%m %{dispatcher:uri}e%q %H\" %{dispatcher:status}e %{dispatcher:cache}e [%{dispatcher:backend}e] %{ms}Tms \"%{Host}i\"" dispatcher
+
+ LogFormat "%t \"%m %{dispatcher:uri}e%q %H\" %{dispatcher:status}e %{dispatcher:cache}e [%{dispatcher:backend}e] %{ms}Tms \"%{Host}i\"" dispatcher
+
+
+ LogFormat "%t \"%m %{dispatcher:uri}e%q %H\" %{dispatcher:status}e %{dispatcher:cache}e [%{dispatcher:backend}e] %{ms}Tms \"%{Host}i\" \"%{x-request-id}i\"" dispatcher
+
CustomLog "| /usr/sbin/rotatelogs -e -f -t logs/dispatcher.log 86400" dispatcher "expr=%{HANDLER} == 'dispatcher-handler'"
# Log level for the dispatcher module
@@ -116,20 +103,23 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
Header unset Age
-# SITES-3659 Prevent re-encodes of URLs sent to GraphQL Persisted Queries API endpoint
-
- ProxyPassMatch http://${AEM_HOST}:${AEM_PORT} nocanon
-
+# SITES-11040 Do ProxyPassMatch, if caching for GraphQL Persisted Queries is not enabled
+
+ # SITES-3659 Prevent re-encodes of URLs sent to GraphQL Persisted Queries API endpoint
+
+ ProxyPassMatch http://${AEM_HOST}:${AEM_PORT} nocanon
+
+
-# (legacy) Allow ingressroute checks through on /systemready (regardless of dispatcher filters)
+# Legacy /systemready mapped to new Health probe URL /system/probes/health in AEM
- ProxyPass http://${AEM_HOST}:${AEM_PORT}/systemready
+ ProxyPass http://${AEM_HOST}:${AEM_PORT}/system/probes/health
RewriteEngine Off
-# new Health probe URL to legacy /systemready URL mapping
+# Allow ingressroute checks through on /system/probes/health (regardless of dispatcher filters)
- ProxyPass http://${AEM_HOST}:${AEM_PORT}/systemready
+ ProxyPass http://${AEM_HOST}:${AEM_PORT}/system/probes/health
RewriteEngine Off
@@ -154,6 +144,9 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
ProxyPassMatch ${COMMERCE_ENDPOINT}$2
ProxyPassReverse ${COMMERCE_ENDPOINT}
RewriteEngine Off
+ # CIF-2971: Experience Platform Connector cookie to header forwarding
+ SetEnvIfNoCase Cookie "(^| )aep-segments-membership=([^;]*)" AEP_SEGMENTS_MEMBERSHIP=$2
+ RequestHeader set aep-segments-membership "%{AEP_SEGMENTS_MEMBERSHIP}e" env=AEP_SEGMENTS_MEMBERSHIP
@@ -165,6 +158,8 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
ProxyPassMatch ${AEM_COMMERCE_ENDPOINT_2}$2
ProxyPassReverse ${AEM_COMMERCE_ENDPOINT_2}
RewriteEngine Off
+ SetEnvIfNoCase Cookie "(^| )aep-segments-membership=([^;]*)" AEP_SEGMENTS_MEMBERSHIP=$2
+ RequestHeader set aep-segments-membership "%{AEP_SEGMENTS_MEMBERSHIP}e" env=AEP_SEGMENTS_MEMBERSHIP
@@ -176,6 +171,8 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
ProxyPassMatch ${AEM_COMMERCE_ENDPOINT_3}$2
ProxyPassReverse ${AEM_COMMERCE_ENDPOINT_3}
RewriteEngine Off
+ SetEnvIfNoCase Cookie "(^| )aep-segments-membership=([^;]*)" AEP_SEGMENTS_MEMBERSHIP=$2
+ RequestHeader set aep-segments-membership "%{AEP_SEGMENTS_MEMBERSHIP}e" env=AEP_SEGMENTS_MEMBERSHIP
@@ -187,6 +184,8 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
ProxyPassMatch ${AEM_COMMERCE_ENDPOINT_4}$2
ProxyPassReverse ${AEM_COMMERCE_ENDPOINT_4}
RewriteEngine Off
+ SetEnvIfNoCase Cookie "(^| )aep-segments-membership=([^;]*)" AEP_SEGMENTS_MEMBERSHIP=$2
+ RequestHeader set aep-segments-membership "%{AEP_SEGMENTS_MEMBERSHIP}e" env=AEP_SEGMENTS_MEMBERSHIP
@@ -198,6 +197,8 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
ProxyPassMatch ${AEM_COMMERCE_ENDPOINT_5}$2
ProxyPassReverse ${AEM_COMMERCE_ENDPOINT_5}
RewriteEngine Off
+ SetEnvIfNoCase Cookie "(^| )aep-segments-membership=([^;]*)" AEP_SEGMENTS_MEMBERSHIP=$2
+ RequestHeader set aep-segments-membership "%{AEP_SEGMENTS_MEMBERSHIP}e" env=AEP_SEGMENTS_MEMBERSHIP
@@ -215,7 +216,7 @@ Alias "/system/probes/start" /etc/httpd/probes/startup-status.json
# internal metadata endpoint
-Alias "/gitinit-status" /etc/httpd/metadata/gitinit-status.json
+Alias "/gitinit-status" metadata/gitinit-status.json
RewriteEngine Off
@@ -227,6 +228,50 @@ Alias "/gitinit-status" /etc/httpd/metadata/gitinit-status.json
Require expr "%{HTTP_HOST} == '${POD_NAME}'"
+# Dedicated vhost for EaaS:
+# (currently disabled, but customers can expect it to be enabled in future versions - CQ-4349728)
+#
+# ServerName "test.eaas"
+# # possibility to make overrides before directives in this vhost
+# IncludeOptional conf.d/includes/first-listed-vhost.pre.includes
+# # since this vhost is first-listed one, this setting influences other vhosts - see https://httpd.apache.org/docs/2.4/mod/core.html#limitrequestfieldsize
+# LimitRequestFieldSize 32768
+# DocumentRoot /var/www/localhost/htdocs
+# AllowEncodedSlashes NoDecode
+#
+# Header add X-Vhost "test.eaas"
+#
+#
+# Options Indexes FollowSymLinks
+# AllowOverride None
+# Require all granted
+#
+#
+# # SKYOPS-49434: Allow EaaS to access publish instance directly for dev and stage environments when test.eaas vhost is requested
+#
+#
+# ProxyPassMatch http://${AEM_HOST}:${AEM_PORT}
+# RewriteEngine Off
+#
+#
+#
+#
+# ProxyPassMatch http://${AEM_HOST}:${AEM_PORT}
+# RewriteEngine Off
+#
+#
+# # 403 Forbidden on prod
+#
+#
+# RewriteEngine on
+# RewriteRule ^ - [F]
+#
+#
+# # possibility to make overrides after directives in this vhost
+# IncludeOptional conf.d/includes/first-listed-vhost.post.includes
+#
+
+# Customer's vhosts:
Include conf.d/enabled_vhosts/*.vhost
# Create a catch-all vhost
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/includes/.keep b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/includes/.keep
new file mode 100644
index 0000000..e69de29
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/default_rewrite.rules b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/default_rewrite.rules
index 72387e8..f62be1b 100644
--- a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/default_rewrite.rules
+++ b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/default_rewrite.rules
@@ -38,6 +38,6 @@ RewriteRule .* - [F]
# Block wp-login
RewriteRule ^.*wp-login - [F,NC,L]
-# Allow caching of persisted queries
+# Allow the dispatcher to be able to cache persisted queries - they need an extension for the cache file
RewriteCond %{REQUEST_URI} ^/graphql/execute.json
-RewriteRule ^/(.*)$ /$1;.json [PT,L]
\ No newline at end of file
+RewriteRule ^/(.*)$ /$1;.json [PT]
\ No newline at end of file
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/rewrite.rules b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/rewrite.rules
index 57952e1..f365904 100644
--- a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/rewrite.rules
+++ b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/rewrites/rewrite.rules
@@ -20,5 +20,6 @@ RewriteCond %{REQUEST_URI} !^/saml_login
RewriteCond %{REQUEST_URI} !^/system
RewriteCond %{REQUEST_URI} !^/tmp
RewriteCond %{REQUEST_URI} !^/var
+RewriteCond %{REQUEST_URI} !^/conf/(.+\.jpe?g|.+\.png|.+\.svg)$
RewriteCond %{REQUEST_URI} (.html|.jpe?g|.png|.svg)$
RewriteRule ^/(.*)$ /content/${CONTENT_FOLDER_NAME}/$1 [PT,L]
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/variables/global.vars b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/variables/global.vars
index 6bef338..5a19221 100644
--- a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/variables/global.vars
+++ b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.d/variables/global.vars
@@ -22,7 +22,6 @@
#
# Define REWRITE_LOG_LEVEL Warn
-
# Disable default caching headers
#
# The following headers are set by default dispatcher configuration Expires, Cache-Control, Age.
@@ -30,3 +29,11 @@
# and you can fully customize the caching behavior.
#
# Define DISABLE_DEFAULT_CACHING
+
+# Enable caching for GraphQL persisted queries
+#
+# By default, GraphQL persisted query responses are not cached in dispatcher.
+# If you uncomment and define CACHE_GRAPHQL_PERSISTED_QUERIES variable, then persisted query results
+# will be cached in dispatcher. Using CORS, in that case, will require additional dispatcher configuration.
+#
+# Define CACHE_GRAPHQL_PERSISTED_QUERIES
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/available_farms/default.farm b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/available_farms/default.farm
index 172ad60..a6bfbee 100644
--- a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/available_farms/default.farm
+++ b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/available_farms/default.farm
@@ -91,11 +91,11 @@
# well as general marketing related parameters such as e.g. utm_campaign.
# Marketing parameters can normally be ignored on most websites as they are tracked
# through different means.
- /ignoreUrlParams {
- /0001 { /glob "*" /type "deny" }
+ # /ignoreUrlParams {
+ # /0001 { /glob "*" /type "deny" }
# /0002 { /glob "q" /type "allow" }
- # $include "../cache/marketing_query_parameters.any"
- }
+ # $include "../cache/marketing_query_parameters.any"
+ # }
# Cache response headers next to a cached file. On the first request to
# an uncached resource, all headers matching one of the values found here
diff --git a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/filters/default_filters.any b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/filters/default_filters.any
index 43af2ce..ae35ff0 100644
--- a/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/filters/default_filters.any
+++ b/conga-aem-definitions/src/main/resources/aem-sdk-dispatcher/src/conf.dispatcher.d/filters/default_filters.any
@@ -97,4 +97,7 @@
/0061 { /type "allow" /method '(GET|POST|OPTIONS)' /url "/graphql/execute.json*" }
# Allow Forms Document Services requests
-/0062 { /type "allow" /method "POST" /url "/adobe/forms/*" }
+/0062 { /type "allow" /method '(GET|POST)' /url "/adobe/forms/*" }
+
+# Allow PUT for Forms DocAssurance Services Decryption API
+/0063 { /type "allow" /method "PUT" /url "/adobe/forms/document/assure/encrypt" }