Explicación de los archivos de configuración | AEM

Descripción

Entorno
Experience Manager
Problema/Síntomas
Este documento desglosará y explicará cada uno de los archivos de configuración implementados en un servidor de Dispatcher incorporado estándar aprovisionado en Adobe Managed Services. Su uso, convención de nombres, etc.





Convención de nomenclatura



 


Apache Webserver no se preocupa realmente de qué es la extensión de archivo de un archivo al segmentarlo con una instrucción include o include opcional.  Nombrarlos apropiadamente con nombres que eliminen conflictos y confusión ayuda muchísimo. Los nombres utilizados describirán el ámbito en el que se aplica el archivo, lo que facilita las cosas. Si todo se llama .conf esto se vuelve realmente confuso. Queremos evitar los archivos y las extensiones con nombres incorrectos.  A continuación se muestra una lista de las diferentes extensiones de archivo personalizadas y convenciones de nomenclatura utilizadas en un Dispatcher configurado con AMS típico.




 

Archivos contenidos en conf.d/

Archivo Destino del archivo Descripción
FILENAME.conf /etc/httpd/conf.d/ Una instalación predeterminada de Enterprise Linux utiliza esta extensión de archivo e incluye una carpeta como lugar para anular la configuración en httpd.conf y permitirle añadir funcionalidad adicional a nivel global en Apache.
FILENAME.vhost En escena: /etc/httpd/conf.d/available_vhosts/

Activo:

/etc/httpd/conf.d/enabled_vhosts/

*Nota: Los archivos .vhost no deben copiarse en la carpeta enabled_vhosts sino que deben utilizarse enlaces simbólicos a una ruta relativa al archivo available_vhosts/ .vhost

Los archivos *.vhost (host virtual) son entradas de VirtualHosts para que coincidan con los nombres de host y permitan que Apache gestione cada tráfico de dominio con reglas diferentes. Desde el archivo .vhost, se incluirán otros archivos como reescrituras, listas blancas, etc.
FILENAME_rewrite.rules /etc/httpd/conf.d/rewrites/ Los archivos *_rewrite.rules almacenan reglas mod_rewrite que se van a incluir y consumir explícitamente en un archivo vhost
FILENAME_whitelist.rules /etc/httpd/conf.d/whitelists/ Los archivos *_ipwhitelist.rules se incluyen dentro de los archivos *.vhost. Contiene direcciones IP regex o permite reglas de denegación para permitir listas blancas de IP. Si está intentando restringir la visualización de un host virtual basado en direcciones IP, generará uno de estos archivos y lo incluirá desde su archivo *.vhost




 

Archivos contenidos en conf.module.d/



 

Archivo Destino del archivo Descripción
FILENAME.any /etc/httpd/conf.dispatcher.d/ El módulo Apache de Dispatcher AEM fuentes su configuración de archivos *.any. El archivo de inclusión principal predeterminado es conf.dispatcher.d/dispatcher.any
FILENAME_farm.any Ensayo:

/etc/httpd/conf.dispatcher.d/available_farms/

Activo:

/etc/httpd/conf.dispatcher.d/enabled_farms/

*Nota: estos archivos de granja no deben copiarse en la carpeta enabled_farms, sino que deben usar enlaces simbólicos a una ruta relativa a available_farms/ Archivo farm.any* Los archivos farm.any se incluyen dentro del archivo conf.dispatcher.d/dispatcher.any. Estos archivos de granja principales existen para controlar el comportamiento del módulo para cada tipo de renderizado o sitio web. Los archivos se crean en el directorio available_farms y se habilitan con un enlace simbólico en el directorio enabled_farms.



Los incluye automáticamente por nombre del archivo dispatcher.any.



Los archivos de granja de línea de base comienzan con 000 para asegurarse de que se cargan primero.

Los archivos de granja personalizados deben cargarse después de iniciar su esquema numérico en 100
para garantizar el comportamiento de inclusión adecuado.
FILENAME_filters.any /etc/httpd/conf.dispatcher.d/filters/ Los archivos *_filters.any se incluyen desde dentro de los archivos conf.dispatcher.d/enabled_farms/*_farm.any. Cada granja tiene un conjunto de reglas que cambian qué tráfico debe filtrarse y no llegar a los procesadores.
FILENAME_vhosts.any /etc/httpd/conf.dispatcher.d/vhosts/ Los archivos *_vhosts.any se incluyen desde dentro de los archivos conf.dispatcher.d/enabled_farms/*_farm.any. Estos archivos son una lista de nombres de host o rutas uri a las que se debe hacer coincidir con la coincidencia de blob para determinar qué procesador utilizar para atender esa solicitud
FILENAME_cache.any /etc/httpd/conf.dispatcher.d/cache/ Los archivos *_cache.any se incluyen desde dentro de los archivos conf.dispatcher.d/enabled_farms/*_farm.any. Estos archivos especifican qué elementos se almacenan en caché y cuáles no
FILENAME_invalidate_allowed.any /etc/httpd/conf.dispatcher.d/cache/ Los archivos *_invalidate_allowed.any se incluyen dentro de los archivos conf.dispatcher.d/enabled_farms/*_farm.any. Indican qué direcciones IP pueden enviar solicitudes de vaciado e invalidación.
FILENAME_clientheaders.any /etc/httpd/conf.dispatcher.d/clientheaders/ Los archivos *_clientheaders.any se incluyen dentro de los archivos conf.dispatcher.d/enabled_farms/*_farm.any. Indican qué encabezados de cliente deben pasarse a través de cada renderizador.
FILENAME_renders.any /etc/httpd/conf.dispatcher.d/renders/ Los archivos *_renders.any se incluyen dentro de los archivos conf.dispatcher.d/enabled_farms/*_farm.any. Especifican la configuración de IP, puerto y tiempo de espera para cada renderizador. Un renderizador adecuado puede ser un servidor de ciclo de vida o cualquier sistema de AEM desde el que Dispatcher pueda recuperar o proxy las solicitudes




 

Problemas evitados



 


Al seguir la convención de nomenclatura puede evitar errores bastante fáciles de cometer que pueden tener resultados catastróficos.  Explicaremos algunos ejemplos.




 

Ejemplo de problema



 


Como sitio Ejemplo para ExampleCo, los desarrolladores de las configuraciones de Dispatcher crearon dos archivos de configuración.

/etc/httpd/conf.d/exampleco.conf





 



1
2
3
4
5
6
7
8
9
10
VirtualHost *:80      ServerName  "exampleco"      ServerAlias "www.exampleco.com"      .......... SNIP ...............      IfModule mod_rewrite.c          ReWriteEngine   on          LogLevel warn rewrite:trace1          Include /etc/httpd/conf.d/rewrites/exampleco.conf      /IfModule /VirtualHost






 


/etc/httpd/conf.d/rewrites/exampleco.conf





 



1
2
RewriteRule /$ /content/exampleco/en.html PT,L RewriteRule /robots.txt$ /content/dam/exampleco/robots.txt PT,L






 

PELIGRO POTENCIAL



 


Los nombres de archivo son los mismos

Si el archivo vhost se coloca accidentalmente en la carpeta reescrituras y el archivo reescrituras se coloca en la carpeta vhosts.  Parece que se implementa correctamente por nombre de archivo, pero Apache generará un error y el problema no se verá inmediatamente.

Generalmente, se convierte en un problema

Si los dos archivos se descargan en la misma ubicación, pueden sobrescribirse por sí mismos o hacer que sea indistinguible, lo que convierte el proceso de implementación en una pesadilla.

Las extensiones de archivo son las mismas y son propensas a la autoinclusión

Las extensiones de archivo son las mismas y utiliza la extensión autoincluida que Apache incluirá automáticamente cualquier archivo .conf en muchas de sus carpetas predeterminadas.

Generalmente, se convierte en un problema

Si el archivo vhost con la extensión .conf se coloca en la carpeta /etc/httpd/conf.d/ intentará cargarlo en la memoria en Apache, lo que normalmente es correcto, pero si el archivo de reglas de reescritura con la extensión .conf se coloca en la carpeta /etc/httpd/conf.d/, se incluirá automáticamente y se aplicará globalmente causando resultados confusos y no deseados.

Resolución

Asigne un nombre a los archivos en función de lo que hagan y de forma segura fuera del espacio de nombres de reglas de inclusión automática.

Si es un archivo host virtual, asígnele el nombre .vhost como extensión.

Si se trata de un archivo de reglas de reescritura, llámelo con site_rewrite.rules como sufijo y extensión. Esta convención de nombres dejará claro para qué sitio está y que es un conjunto de reglas de reescritura.

Si es un archivo de regla de lista blanca de IP, llámelo description_whitelist.rules como sufijo y extensión. Esta convención de nomenclatura le dará una descripción de para qué sirve y de que es un conjunto de reglas de coincidencia de IP.

El uso de estas convenciones de nomenclatura evitará problemas si un archivo se mueve a un directorio de inclusión automática al que no pertenece.

Por ejemplo, colocar un archivo con el nombre .rules, .any o .vhost en la carpeta de inclusión automática de /etc/httpd/conf.d/ no tendría ningún efecto.

Si una solicitud de cambio de implementación indica “implemente exampleco_rewrite.rules en distribuidores de producción”, la persona que implementa los cambios ya puede saber que no están agregando un nuevo sitio, solo están actualizando las reglas de reescritura como se indica con el nombre de archivo.

 Incluir orden

Al ampliar la funcionalidad y las configuraciones en Apache Webserver instalado en Enterprise Linux, tiene algunos pedidos de inclusión importantes que desea comprender

 Órdenes de inclusión de línea de base de Apache
órdenes de inclusión de línea de base de Apache.  el binario apache comienza con httpd.conf, que hace un includeopcional a conf.d/*.conf y conf.module.d/* directorios .conf

Como se ve en el diagrama de arriba, el binario httpd solo mira al archivo httpd.conf como su archivo de configuración.  Ese archivo contiene las siguientes instrucciones:

 

Include conf.modules.d/*.conf IncludeOptional conf.d/*.conf


 Incluye el nivel superior de AMS

Cuando aplicamos nuestro estándar, agregamos algunos tipos de archivos adicionales e incluimos los nuestros.

Aquí están los directorios de línea de base de AMS y el nivel superior incluye
La línea de base de AMS incluye el inicio con un dispatcher_vhost.conf que incluirá cualquier archivo con el *.vhost del directorio /etc/httpd/conf.d/enabled_vhosts/.  Los elementos del directorio /etc/httpd/conf.d/enabled_vhosts/ son enlaces simbólicos al archivo de configuración real que se encuentra en /etc/httpd/conf.d/available_vhosts/

Basándonos en la base de Apache mostramos cómo AMS creó algunas carpetas adicionales y el nivel superior incluye carpetas conf.d así como directorios específicos de módulos anidados en /etc/httpd/conf.dispatcher.d/

Cuando apache se cargue, se extraerá la variable /etc/httpd/conf.modules.d/02-dispatcher.conf y ese archivo incluirá el archivo binario /etc/httpd/modules/mod_dispatcher.so en su estado de ejecución.

 

1 LoadModule dispatcher_module modules /mod_dispatcher .so

Para usar el módulo en nuestra *VirtualHost /* soltamos un archivo de configuración en */etc/httpd/conf.d/named dispatcher_vhost.conf y dentro de este archivo verá use setup los parámetros básicos necesarios para que funcione el módulo:
 

| 1
2
3


<br>IfModule disp_apache2.c <br> DispatcherConfig conf.dispatcher.d /dispatcher .any<br> ...SNIP...<br> /IfModule<br>


 
Como puede ver arriba, esto incluye el archivo Dispatcher.any de nivel superior para que nuestro módulo Dispatcher recoja sus archivos de configuración de /etc/httpd/conf.dispatcher.d/dispatcher.any

Preste atención al contenido de este archivo:

 


| 1
2
3 | /farms {      $include "enabled_farms/*_farm.any" } |
| — | — |


 
El archivo Dispatcher.any de nivel superior incluye todos los archivos de granja habilitados que residen en /etc/httpd/conf.dispatcher.d/enabled_farms/ con el nombre de archivo de FILENAME_farm.any que sigue nuestra convención de nomenclatura estándar.

Más adelante, en la sección dispatcher_vhost.conf archivo mencionado anteriormente también hacemos una declaración include para habilitar cada uno de los archivos host virtuales habilitados que residen en /etc/httpd/conf.d/enabled_vhosts/ con el nombre de archivo de FILENAME.vhost que sigue nuestra convención de nomenclatura estándar.



 


| 1 | IncludeOptional /etc/httpd/conf.d/enabled_vhosts/*.vhost |
| — | — |


 
En cada uno de nuestros archivos .vhost notará que el módulo de Dispatcher se inicializa como un controlador de archivos predeterminado para un directorio.  A continuación se muestra un ejemplo de archivo .vhost para mostrar la sintaxis:

 


| 1
2
3
4
5
6
7
8
9
10
11
12 | VirtualHost *:80      ServerName    "weretail"      ServerAlias www.weretail.com weretail.com      Directory /          IfModule disp_apache2.c              ....SNIP....              SetHandler dispatcher-handler          /IfModule          ....SNIP....      /Directory      ....SNIP.... /VirtualHost |
| — | — |


 
Después de que el nivel superior incluye la resolución, tienen otras subinclusiones que vale la pena mencionar.  Aquí hay un diagrama de alto nivel sobre cómo los archivos de granjas y vhosts incluyen otros subelementos

 Incluye host virtual de AMS
los hosts virtuales de ams incluyen subelementos.  Esta imagen muestra cómo un archivo .vhost incluye archivos de variables, listas blancas y carpetas de reescritura
 
Cuando cualquier archivo .vhost /etc/httpd/conf.d/available_vhosts/ el directorio se enlaza simbólicamente a /etc/httpd/conf.d/enabled_vhosts/ se utilizarán en la configuración en ejecución.

Los archivos .vhost tienen subinclusiones basadas en piezas comunes que hemos encontrado.  Cosas como variables, listas blancas y reglas de reescritura.

El archivo .vhost tendrá instrucciones include para cada archivo en función de dónde deban incluirse en el archivo .vhost.  A continuación se muestra un ejemplo de sintaxis de un archivo .vhost como referencia:


<br>Include /etc/httpd/conf .d /variables/weretail .vars VirtualHost *:80<br> ServerName "${MAIN_DOMAIN}" <br> Directory / Include /etc/httpd/conf .d /whitelists/weretail *_whitelist.rules<br> IfModule disp_apache2.c<br> ....SNIP....<br> SetHandler dispatcher-handler<br> /IfModule<br> ....SNIP....<br> /Directory<br> ....SNIP....<br> IfModule mod_rewrite.c<br> ReWriteEngine on<br> LogLevel warn rewrite:trace1<br> Include /etc/httpd/conf .d /rewrites/weretail_rewrite .rules<br> /IfModule /VirtualHost<br>


 
Como puede ver en el ejemplo anterior, hay una inclusión para las variables necesarias en este archivo de configuración que se utilizan más adelante.

Dentro del archivo /etc/httpd/conf.d/variables/weretail.vars podemos ver qué variables están definidas:



 


| 1 | Define MAIN_DOMAIN dev.weretail.com |
| — | — |


 
También puede ver una línea que incluye una lista de archivos whitelist.rules que restringen quién puede ver este contenido en base a diferentes criterios de listas blancas.  Veamos el contenido de uno de los archivos de la lista blanca /etc/httpd/conf.d/whitelists/weretail_mainoffice_whitelist.rules:

 


| 1
2
3 | RequireAny    Require ip 192.150.16.0/23 /RequireAny |
| — | — |


 
También puede ver una línea que incluye un conjunto de reglas de reescritura.  Veamos el contenido del weretail_rewrite.rules archivo:

 


| 1
2
3
4
5
6 | RewriteRule /robots.txt$ /content/dam/weretail/robots.txt NC,PT RewriteCond %{SERVER_NAME} brand1.weretail.net NC RewriteRule /favicon.ico$ /content/dam/weretail/favicon.ico NC,PT RewriteCond %{SERVER_NAME} brand2.weretail.com NC RewriteRule /sitemap.xml$ /content/weretail/general/sitemap.xml NC,PT RewriteRule /logo.jpg$ /content/dam/weretail/general/logo.jpg NC,PT |
| — | — |


 Inclusiones de granja de AMS
<FILENAME>_farms.any incluirá archivos sub.any para completar una configuración de granja.  En esta imagen puede ver que una granja incluirá cada caché de archivos de sección de nivel superior, encabezados de clientes, filtros, renderizadores y archivos vhosts.any
 
Cuando cualquier archivo FILENAME_farm.any /etc/httpd/conf.dispatcher.d/available_farms/ el directorio se enlaza simbólicamente a /etc/httpd/conf.dispatcher.d/enabled_farms/ se utilizarán en la configuración en ejecución.

Los archivos de granja tienen subinclusiones basadas en secciones de nivel superior de la granja como caché, encabezados de clientes, filtros, renderizadores y vhosts.

Los archivos FILENAME_farm.any tendrán instrucciones include para cada archivo en función de dónde deban incluirse en el archivo de granja.  A continuación se muestra un ejemplo de sintaxis de un archivo FILENAME_farm.any como referencia válida:

 


| 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 | /weretailfarm {       /clientheaders {          $include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_publish_clientheaders.any"          $include "/etc/httpd/conf.dispatcher.d/clientheaders/ams_common_clientheaders.any"      }      /virtualhosts {          $include "/etc/httpd/conf.dispatcher.d/vhosts/weretail_vhosts.any"      }      /renders {          $include "/etc/httpd/conf.dispatcher.d/renders/ams_publish_renders.any"      }      /filter {          $include "/etc/httpd/conf.dispatcher.d/filters/ams_publish_filters.any"          $include "/etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any"      }      ....SNIP....      /cache {          ....SNIP....          /rules {              $include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_cache.any"          }          ....SNIP....          /allowedClients {              /0000 {                  /glob "*.*.*.*"                  /type "deny"              }              $include "/etc/httpd/conf.dispatcher.d/cache/ams_publish_invalidate_allowed.any"          }      ....SNIP....      } } |
| — | — |


 
Como puede ver en cada sección de la granja de weretail en lugar de tener toda la sintaxis necesaria, se utiliza una instrucción include.

Veamos la sintaxis de algunas de estas inclusiones para tener la idea de cómo sería cada subinclusión

/etc/httpd/conf.dispatcher.d/vhosts/weretail_publish_vhosts.any:

 


| 1
2
3 | "brand1.weretail.com" "brand2.weretail.com" "www.weretail.comf" |
| — | — |


Como puede ver, es una nueva línea separada lista de nombres de dominio que debería renderizar desde esta granja sobre los demás.

A continuación, veamos el /etc/httpd/conf.dispatcher.d/filters/weretail_search_filters.any:

 


| 1
2 | /400 { /type "allow" /method "GET" /path "/bin/weretail/lists/*" /extension "json" } /401 { /type "allow" /method "POST" /path "/bin/weretail/search/' /extension "html" } |
| — | — |

|
| — |

En esta página