Descripcion general
La funcionalidad de multitenencia de Fess permite operar multiples inquilinos (organizaciones, departamentos, clientes, etc.) de forma separada con una sola instancia de Fess.
Al usar la funcionalidad de host virtual, puede proporcionar para cada inquilino:
Interfaz de busqueda independiente
Contenido separado
Diseno personalizado
El host virtual actual se refleja en las funciones de filtrado de resultados de busqueda, etiquetas, contenido relacionado, consultas relacionadas y diseno (tema), entre otras funciones de Fess.
Funcionalidad de host virtual
El host virtual es una funcionalidad que proporciona diferentes entornos de busqueda basados en el nombre de host de la solicitud HTTP.
Mecanismo
El usuario accede a
tenant1.example.comFess identifica el nombre de host
Se aplica la configuracion de host virtual correspondiente
Se muestra el contenido y la UI especificos del inquilino
Configuracion de encabezados de host virtual
Para habilitar la funcionalidad de host virtual, configure la correspondencia entre los encabezados de la solicitud HTTP y las claves de host virtual. Existen dos metodos de configuracion:
Pantalla de administracion (recomendado): Configure el campo «Host Virtual» en «Sistema» -> «General». Este valor se guarda como configuracion del sistema y se conserva tras el reinicio. Tiene prioridad sobre
virtual.host.headersenfess_config.properties.Archivo de configuracion: Configure la propiedad
virtual.host.headersenfess_config.properties.
Ambos metodos utilizan el mismo formato de valor de configuracion.
Formato de configuracion
Especifique cada entrada en el formato NombreEncabezado:ValorEncabezado=ClaveHostVirtual, una por linea:
Para multiples hosts virtuales, separe las entradas con saltos de linea.
Comportamiento de coincidencia
Cada vez que Fess recibe una solicitud, compara el valor del encabezado de solicitud correspondiente al «NombreEncabezado» de cada linea configurada con el «ValorEncabezado» configurado.
La comparacion de valores de encabezado no distingue entre mayusculas y minusculas.
Las lineas configuradas se evaluan en orden de arriba a abajo; se aplica la clave de host virtual de la primera linea que coincida.
Si no hay coincidencia, la solicitud se trata sin host virtual (entorno comun).
El resultado de la evaluacion se almacena en cache por solicitud.
Restricciones de claves de host virtual
Las claves de host virtual tienen las siguientes restricciones:
Solo se permiten caracteres alfanumericos y guiones bajos (
a-zA-Z0-9_). Otros caracteres se eliminan automaticamente.Los siguientes nombres de clave estan reservados y no se pueden usar:
admin,common,error,login,profile
Configuracion desde la pantalla de administracion
Configuracion de crawl
Puede separar el contenido especificando el host virtual en la configuracion de crawl web:
Iniciar sesion en la pantalla de administracion
Crear configuracion de crawl en «Crawler» -> «Web»
Seleccionar la clave de host virtual configurada en el campo «Host Virtual» (se admite seleccion multiple)
El contenido crawleado con esta configuracion solo sera buscable en el host virtual especificado
Nota
El campo «Host Virtual» esta disponible en las configuraciones de crawl de web, sistema de archivos y almacen de datos. La clave de host virtual seleccionada aqui se asigna a cada documento crawleado y se usa para filtrar por el host virtual actual en el momento de la busqueda.
Control de acceso
Combinacion de host virtual y roles
Al combinar hosts virtuales con control de acceso basado en roles, es posible un control de acceso mas detallado.
Configure el host virtual y los permisos juntos en la configuracion de crawl:
Busqueda basada en roles
Para mas detalles, consulte Configuración de Búsqueda Basada en Roles.
Personalizacion de UI
Puede personalizar la UI para cada host virtual.
Aplicacion de tema
Aplicar un tema diferente para cada host virtual:
Configurar tema en «Sistema» -> «Diseno»
Especificar tema en la configuracion del host virtual
CSS personalizado
Para aplicar CSS personalizado por host virtual, edite los archivos CSS en la pantalla de administracion en «Sistema» -> «Diseno». Tambien puede colocar plantillas personalizadas en el directorio de vista correspondiente a la clave del host virtual.
Configuracion de etiquetas
Limitar etiquetas mostradas para cada host virtual:
Especificar host virtual en la configuracion del tipo de etiqueta
La etiqueta solo se muestra en el host virtual especificado
Acceso mediante API
Las solicitudes a la API de busqueda tambien determinan el host virtual por el nombre de host de la solicitud (el encabezado configurado, normalmente el encabezado Host), igual que la UI. Por ejemplo, una solicitud dirigida a tenant1.example.com se limita automaticamente al host virtual tenant1 y solo se busca en el contenido de ese host virtual.
Solicitud de API
Para autenticarse con un token de acceso, especifiquelo en el encabezado Authorization en formato Bearer:
Nota
Los tokens de acceso no estan vinculados a un host virtual especifico. Un token es valido para cualquier host virtual; el host virtual de destino se determina por el nombre de host al que se envia la solicitud. Si se envia el mismo token a un nombre de host diferente, se aplica al host virtual correspondiente. Si desea controlar el alcance del acceso independientemente del host virtual, combinen con el control de acceso basado en roles (Configuración de Búsqueda Basada en Roles).
Configuracion de DNS
Ejemplo de configuracion de DNS para implementar multitenencia:
Subdominios al mismo servidor
Configuracion de proxy inverso
Ejemplo de configuracion de proxy inverso con Nginx:
Separacion de datos
Si se requiere separacion completa de datos, considere los siguientes enfoques:
Separacion a nivel de indice
Usar instancias e indices separados de Fess para cada inquilino:
Nota
index.document.search.index solo puede establecerse en un valor por instancia. Para una separacion completa a nivel de indice, necesita ejecutar instancias separadas de Fess por inquilino o implementar codigo personalizado. Para multitenencia tipica, la separacion logica mediante la funcionalidad de host virtual es suficiente.
Mejores practicas
Convencion de nombres clara: Usar una convencion de nombres consistente para hosts virtuales y roles
Pruebas: Probar exhaustivamente el funcionamiento en cada inquilino
Monitoreo: Monitorear el uso de recursos por inquilino
Documentacion: Documentar la configuracion de inquilinos
Limitaciones
La pantalla de administracion es compartida por todos los inquilinos
La configuracion del sistema afecta a todos los inquilinos
Algunas funcionalidades pueden no ser compatibles con hosts virtuales
Informacion de referencia
Configuración de Búsqueda Basada en Roles - Control de acceso basado en roles
Host Virtual - Detalles de configuracion de host virtual
Diseño de Página - Personalizacion de diseno