Übersicht
Die Multitenancy-Funktion von Fess ermöglicht es, mehrere Mandanten (Organisationen, Abteilungen, Kunden usw.) separat innerhalb einer einzigen Fess-Instanz zu betreiben.
Mit der Virtueller-Host-Funktion können Sie jedem Mandanten Folgendes bereitstellen:
Unabhängige Such-Oberfläche
Getrennte Inhalte
Angepasstes Design
Der aktuelle virtuelle Host wird neben der Filterung von Suchergebnissen auch in anderen Fess-Funktionen wie Labels, verwandten Inhalten, verwandten Abfragen und Design (Themes) berücksichtigt.
Virtueller-Host-Funktion
Ein virtueller Host ist eine Funktion, die basierend auf dem Hostnamen einer HTTP-Anfrage verschiedene Suchumgebungen bereitstellt.
Funktionsweise
Benutzer greift auf
tenant1.example.comzuFess identifiziert den Hostnamen
Wendet die entsprechende Konfiguration des virtuellen Hosts an
Zeigt mandantenspezifische Inhalte und Oberfläche an
Konfiguration des Virtueller-Host-Headers
Um die Virtueller-Host-Funktion zu aktivieren, konfigurieren Sie die Zuordnung zwischen den HTTP-Anfrage-Headern und den virtuellen Host-Keys. Es gibt zwei Konfigurationsmethoden:
Verwaltungsoberfläche (empfohlen): Geben Sie den Wert im Feld „Virtueller Host“ unter „System“ → „Allgemein“ ein. Dieser Wert wird als Systemeinstellung gespeichert und bleibt auch nach einem Neustart erhalten. Er hat Vorrang vor
virtual.host.headersinfess_config.properties.Konfigurationsdatei: Geben Sie den Wert in der Eigenschaft
virtual.host.headersinfess_config.propertiesan.
Unabhängig von der gewählten Methode ist das Format der Konfigurationswerte identisch.
Konfigurationsformat
Geben Sie jeden Eintrag im Format Headername:Headerwert=VirtuellerHostKey an, einen pro Zeile:
Für mehrere virtuelle Hosts trennen Sie die Einträge durch Zeilenumbrüche.
Matching-Verhalten
Bei jeder eingehenden Anfrage vergleicht Fess den Wert des in der jeweiligen Zeile angegebenen Header-Namens mit dem konfigurierten Headerwert.
Beim Vergleich von Headerwerten wird nicht zwischen Groß- und Kleinschreibung unterschieden.
Die konfigurierten Zeilen werden von oben nach unten ausgewertet; der virtuelle Host-Key der ersten übereinstimmenden Zeile wird angewendet.
Wenn keine Zeile übereinstimmt, wird die Anfrage ohne virtuellen Host (gemeinsame Umgebung) behandelt.
Das Auswertungsergebnis wird pro Anfrage zwischengespeichert.
Einschränkungen für virtuelle Host-Keys
Für virtuelle Host-Keys gelten folgende Einschränkungen:
Nur alphanumerische Zeichen und Unterstriche (
a-zA-Z0-9_) sind erlaubt. Andere Zeichen werden automatisch entfernt.Folgende Key-Namen sind reserviert und können nicht verwendet werden:
admin,common,error,login,profile
Konfiguration über die Verwaltungsoberfläche
Crawl-Konfiguration
Durch Angabe eines virtuellen Hosts in den Web-Crawl-Einstellungen können Sie Inhalte trennen:
Melden Sie sich in der Verwaltungsoberfläche an
Erstellen Sie eine Crawl-Konfiguration unter „Crawler“ → „Web“
Wählen Sie im Feld „Virtueller Host“ einen oder mehrere bereits konfigurierte virtuelle Host-Keys aus
Mit dieser Konfiguration gecrawlte Inhalte sind nur über den angegebenen virtuellen Host durchsuchbar
Bemerkung
Das Feld „Virtueller Host“ ist in den Crawl-Konfigurationen für Web, Dateisystem und Datenspeicher verfügbar. Der hier ausgewählte virtuelle Host-Key wird jedem gecrawlten Dokument zugewiesen und bei der Suche nach dem aktuellen virtuellen Host gefiltert.
Zugriffskontrolle
Kombination von virtuellem Host und Rollen
Durch die Kombination von virtuellem Host mit rollenbasierter Zugriffskontrolle ist eine detailliertere Zugriffskontrolle möglich.
Konfigurieren Sie virtuellen Host und Berechtigungen gemeinsam in der Crawl-Konfiguration:
Rollenbasierte Suche
Details finden Sie unter Konfiguration rollenbasierter Suche.
UI-Anpassung
Sie können die Oberfläche für jeden virtuellen Host anpassen.
Themes anwenden
Wenden Sie verschiedene Themes für jeden virtuellen Host an:
Richten Sie Themes unter „System“ → „Design“ ein
Geben Sie das Theme in der Konfiguration des virtuellen Hosts an
Benutzerdefiniertes CSS
Um benutzerdefiniertes CSS pro virtuellem Host anzuwenden, bearbeiten Sie CSS-Dateien in der Verwaltungsoberfläche unter „System“ → „Design“. Sie können auch benutzerdefinierte Templates im View-Verzeichnis des entsprechenden virtuellen Host-Keys ablegen.
Label-Einstellungen
Schränken Sie die angezeigten Labels für jeden virtuellen Host ein:
Geben Sie den virtuellen Host in den Label-Typ-Einstellungen an
Labels werden nur für den angegebenen virtuellen Host angezeigt
API-Zugriff
Auch API-Anfragen an die Such-API werden – ebenso wie bei der Oberfläche – anhand des Hostnamens der Anfrage (dem konfigurierten Header, in der Regel dem Host-Header) dem virtuellen Host zugeordnet. Eine Anfrage an tenant1.example.com wird beispielsweise automatisch dem virtuellen Host tenant1 zugeordnet, sodass nur Inhalte dieses virtuellen Hosts durchsucht werden.
API-Anfrage
Bei der Authentifizierung mit einem Zugriffstoken wird dieses im Authorization-Header im Bearer-Format angegeben:
Bemerkung
Zugriffstokens sind nicht an einen bestimmten virtuellen Host gebunden. Ein Token ist für alle virtuellen Hosts gültig; der Ziel-virtuelle-Host wird durch den Hostnamen des Anfragziels bestimmt. Wird dasselbe Token an einen anderen Hostnamen gesendet, wird es einem anderen virtuellen Host zugeordnet. Wenn Sie den Zugriffsbereich unabhängig vom virtuellen Host steuern möchten, kombinieren Sie dies mit der rollenbasierten Zugriffskontrolle (Konfiguration rollenbasierter Suche).
DNS-Konfiguration
Beispiel-DNS-Konfiguration zur Umsetzung von Multitenancy:
Subdomains zum selben Server
Reverse-Proxy-Konfiguration
Beispiel für eine Reverse-Proxy-Konfiguration mit Nginx:
Datentrennung
Wenn eine vollständige Datentrennung erforderlich ist, erwägen Sie folgende Ansätze:
Trennung auf Index-Ebene
Verwenden Sie für jeden Mandanten separate Fess-Instanzen und Indizes:
Bemerkung
index.document.search.index kann pro Instanz nur auf einen Wert gesetzt werden. Für eine vollständige Trennung auf Index-Ebene müssen Sie für jeden Mandanten eine separate Fess-Instanz betreiben oder eine benutzerdefinierte Implementierung vornehmen. Für typisches Multitenancy ist die logische Trennung über die Virtueller-Host-Funktion ausreichend.
Best Practices
Klare Namenskonventionen: Verwenden Sie konsistente Namenskonventionen für virtuelle Hosts und Rollen
Tests: Testen Sie das Verhalten für jeden Mandanten gründlich
Überwachung: Überwachen Sie die Ressourcennutzung pro Mandant
Dokumentation: Dokumentieren Sie die Mandantenkonfigurationen
Einschränkungen
Die Verwaltungsoberfläche wird von allen Mandanten gemeinsam genutzt
Systemeinstellungen betreffen alle Mandanten
Einige Funktionen unterstützen möglicherweise keine virtuellen Hosts
Referenzinformationen
Konfiguration rollenbasierter Suche - Rollenbasierte Zugriffskontrolle
Virtueller Host - Details zur Konfiguration virtueller Hosts
Seitendesign - Design-Anpassung