Solución de variables de entorno de Dispatcher que no se resuelven ni se aplican en AEM Dispatcher

Las variables de entorno de Dispatcher no se pueden resolver, dejan de estar disponibles dentro de IfDefine bloques o se comportan de forma incoherente en todos los entornos cuando tienen un ámbito incorrecto, tienen un nombre incorrecto, se han asignado al servicio incorrecto, se hace referencia en directivas no admitidas o se han anulado con una configuración de Dispatcher no válida. En AEMaaCS solo se insertan ENVIRONMENT_DEV, ENVIRONMENT_STAGE y ENVIRONMENT_PROD como define Apache, mientras que las variables de Cloud Manager personalizadas solo funcionan para la sustitución de cadenas y no se pueden usar dentro de IfDefine; en AMS, las variables deben definirse en /etc/sysconfig/httpd. Validar la definición de la variable, confirmar que se utiliza en un contexto admitido y verificar las cargas vhost correctas durante la ejecución restaura los valores esperados.

Descripción description

Entornos:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services (AMS)
  • AEM Dispatcher (Apache) en niveles de publicación
  • Dispatcher SDK para validación local

Problema/Síntomas:

  • Un encabezado personalizado genera el nombre de variable literal en lugar del valor resuelto, como Access-Control-Allow-Origin: ${VAR_NAME}.
  • El validador de Dispatcher informa de AH00111: La variable de configuración ${VAR_NAME} no está definida.
  • Apache informa de Autoridad incorrecta para una variable vacía utilizada en un host virtual.
  • IfDefine bloques no se pueden aplicar porque ENVIRONMENT_STAGE o ENVIRONMENT_DEV no se han detectado.
  • La canalización falla durante la validación del Dispatcher o la implementación sin un error claro, y el validador local muestra variables no definidas.
  • Las reglas específicas del entorno nunca se ejecutan porque RDE no tiene definido ENVIRONMENT_RDE.

Causa principal:

La resolución de variables de Dispatcher varía según la plataforma y el tipo de directiva. En AEMaaCS, solo se definen ENVIRONMENT_DEV, ENVIRONMENT_STAGE y ENVIRONMENT_PROD; las variables de Cloud Manager están disponibles solo como sustituciones de cadenas y no se pueden usar en IfDefine. El uso de variables dentro de directivas no admitidas (IfDefine, <If> o un ServerName vacío), o el hecho de no definirlas tanto para la canalización como para el tiempo de ejecución, produce valores no definidos. Cuando los enlaces simbólicos vhost o las asignaciones de host virtual de granja son incorrectas, se carga el archivo vhost incorrecto y las variables parecen no funcionar. Las cadenas vacías en un vhost ServerName o ServerAlias causan errores de tiempo de ejecución de Apache. AMS requiere variables definidas en /etc/sysconfig/httpd, y los valores no coincidentes entre entornos causan un comportamiento incorrecto.

Cómo confirmar

  1. Confirme que la variable existe y que está definida correctamente. En Cloud Manager, vaya a Programa > Entorno > Variables de entorno y confirme que el nombre de la variable (distingue mayúsculas de minúsculas) y el valor coinciden exactamente con lo que hace referencia la configuración de Dispatcher. Confirme que la variable está definida para el servicio de publicación, ya que Dispatcher no está presente en los niveles de creación.
  2. Confirme que el tipo de variable es compatible con el contexto en el que se utiliza. AEMaaCS no admite variables de entorno de Cloud Manager dentro de IfDefine; solo trabajan allí ENVIRONMENT_DEV, ENVIRONMENT_STAGE y ENVIRONMENT_PROD. Si IfDefine ajusta una variable de Cloud Manager, no se admite ese uso.
  3. Confirmar que ninguna variable se resuelve en una cadena vacía, especialmente en vhosts. Una variable FQDN vacía en ServerName produce el error de Apache Autoridad incorrecta.

Resolución resolution

  1. Corrija la definición de la variable o la asignación de servicio. Si el nombre o el valor no es correcto o si se asigna al servicio incorrecto, agregue o corrija la variable de entorno en Cloud Manager y vuelva a ejecutar la canalización.
  2. Utilice variables solo en contextos compatibles. Mantenga las variables de Cloud Manager en la sustitución de cadenas, encabezados, reglas de reescritura y configuración de vhost. Para una lógica específica del entorno, use una expresión Apache como <If "${ENV:ENVIRONMENT_TYPE} == 'dev'"> o la definición ENVIRONMENT_DEV en lugar de ajustar una variable personalizada en IfDefine.
  3. Definir variables referenciadas en custom.vars. Agregue una entrada Define para cada variable a la que se haga referencia en los archivos vhost, con el formulario Define VAR_NAME ${varname}. Con las definiciones en su lugar, el validador deja de informar AH00111: La variable de configuración no está definida.
  4. Asegúrese de que los enlaces simbólicos vhost y farm sean válidos. Ejecute el validador de Dispatcher localmente; aparecen errores cuando enabled_vhosts o enabled_farms contienen archivos regulares en lugar de enlaces simbólicos. Vuelva a crear los enlaces simbólicos con ln -s en src/conf.d/enabled_vhosts y enabled_farms hasta que el validador muestre cero errores.
  5. Asegúrese de que se carga el vhost correcto durante la ejecución. Confirme que los archivos de granja de servidores apuntan al archivo virtualhosts.any correcto: una asignación de /virtualhosts incorrecta hace que Dispatcher cargue el vhost predeterminado e ignore las variables personalizadas. Corrija el bloque de granja /virtualhosts para incluir ../virtualhosts/virtualhosts.any y, a continuación, visite una página y confirme que el encabezado personalizado muestra el valor resuelto.
  6. Solo para AMS, establezca variables en /etc/sysconfig/httpd. SSH en el servidor de Dispatcher y ejecute cat /etc/sysconfig/httpd para confirmar que las variables reflejan el entorno correcto y, a continuación, reinicie Apache con sudo systemctl restart httpd. Si los valores se revierten, póngase en contacto con el Soporte AMS.
  7. Realice pruebas localmente mediante Dispatcher SDK. Ejecute el despachante localmente con las herramientas de Dispatcher de AEM SDK y confirme la resolución del encabezado con curl -I http://localhost:8080/....

Validación

  1. Ejecute dispatcher-sdk/bin/validate src y confirme que no aparecen errores de variables indefinidas (AH00111).
  2. Compruebe los encabezados de respuesta HTTP reales con curl -I o DevTools del explorador y confirme que las variables se resuelven en sus valores de Cloud Manager.

Lectura relacionada

recommendation-more-help
experience-cloud-kcs-help-kbarticles