Übersicht
Die Multitenancy-Funktion von Fess ermoeglicht es Ihnen, mehrere Mandanten (Organisationen, Abteilungen, Kunden usw.) separat innerhalb einer einzigen Fess-Instanz zu betreiben.
Mit der Virtual-Host-Funktion koennen Sie jedem Mandanten Folgendes bereitstellen:
Unabhaengige Such-UI
Getrennte Inhalte
Angepasstes Design
Virtual-Host-Funktion
Virtual Host ist eine Funktion, die basierend auf dem HTTP-Anfrage-Hostnamen verschiedene Suchumgebungen bereitstellt.
Funktionsweise
Benutzer greift auf
tenant1.example.comzuFess identifiziert den Hostnamen
Wendet die entsprechende Virtual-Host-Konfiguration an
Zeigt mandantenspezifische Inhalte und UI an
Virtual-Host-Header-Konfiguration
Um die Virtual-Host-Funktion zu aktivieren, konfigurieren Sie die Eigenschaft virtual.host.headers. Diese Eigenschaft wird in fess_config.properties definiert.
Konfigurationsformat
Geben Sie jeden Eintrag im Format HeaderName:HeaderWert=VirtualHostKey an, einen pro Zeile:
# fess_config.properties
virtual.host.headers=Host:tenant1.example.com=tenant1\n\
Host:tenant2.example.com=tenant2
Fuer mehrere Virtual Hosts trennen Sie die Eintraege durch Zeilenumbrueche.
Einschraenkungen fuer Virtual-Host-Keys
Virtual-Host-Keys unterliegen folgenden Einschraenkungen:
Nur alphanumerische Zeichen und Unterstriche (
a-zA-Z0-9_) sind erlaubt. Andere Zeichen werden automatisch entfernt.Folgende Key-Namen sind reserviert und koennen nicht verwendet werden:
admin,common,error,login,profile
Admin-Panel-Konfiguration
Crawl-Konfiguration
Durch Angabe eines Virtual Hosts in den Web-Crawl-Einstellungen koennen Sie Inhalte trennen:
Melden Sie sich im Admin-Panel an
Erstellen Sie eine Crawl-Konfiguration unter „Crawler“ -> „Web“
Waehlen Sie einen in
virtual.host.headersdefinierten Virtual-Host-Key im Feld „Virtual Host“Mit dieser Konfiguration gecrawlte Inhalte sind nur vom angegebenen Virtual Host durchsuchbar
Zugriffskontrolle
Kombination von Virtual Hosts und Rollen
Durch die Kombination von Virtual Hosts mit rollenbasierter Zugriffskontrolle ist eine feinere Zugriffskontrolle moeglich:
Konfigurieren Sie Virtual Host und Berechtigungen gemeinsam in der Crawl-Konfiguration:
# Virtual Host in der Crawl-Konfiguration
tenant1
# Berechtigungen in der Crawl-Konfiguration
{role}tenant1_user
Rollenbasierte Suche
Details finden Sie unter Konfiguration rollenbasierter Suche.
UI-Anpassung
Sie koennen die UI fuer jeden Virtual Host anpassen.
Themes anwenden
Wenden Sie verschiedene Themes fuer jeden Virtual Host an:
Richten Sie Themes unter „System“ -> „Design“ ein
Geben Sie das Theme in der Virtual-Host-Konfiguration an
Benutzerdefiniertes CSS
Um benutzerdefiniertes CSS pro Virtual Host anzuwenden, bearbeiten Sie CSS-Dateien im Admin-Panel unter „System“ -> „Design“. Sie koennen auch benutzerdefinierte Templates im View-Verzeichnis des entsprechenden Virtual-Host-Keys ablegen.
Label-Einstellungen
Beschraenken Sie angezeigte Labels fuer jeden Virtual Host:
Geben Sie den Virtual Host in den Label-Typ-Einstellungen an
Labels werden nur auf dem angegebenen Virtual Host angezeigt
API-Authentifizierung
Steuern Sie den API-Zugriff fuer jeden Virtual Host:
Zugriffstokens
Stellen Sie Zugriffstokens aus, die mit Virtual Hosts verknuepft sind:
Erstellen Sie ein Token unter „System“ -> „Zugriffstoken“
Verknuepfen Sie das Token mit einem Virtual Host
API-Anfrage
curl -H "Authorization: Bearer TENANT_TOKEN" \
"https://tenant1.example.com/api/v1/search?q=keyword"
DNS-Konfiguration
Beispiel-DNS-Konfiguration zur Umsetzung von Multitenancy:
Subdomains zum selben Server
# DNS-Konfiguration
tenant1.example.com A 192.168.1.100
tenant2.example.com A 192.168.1.100
# Oder Wildcard
*.example.com A 192.168.1.100
Reverse-Proxy-Konfiguration
Beispiel fuer Reverse-Proxy-Konfiguration mit Nginx:
server {
server_name tenant1.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
server_name tenant2.example.com;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Datentrennung
Wenn vollstaendige Datentrennung erforderlich ist, erwaegen Sie folgende Ansaetze:
Index-Level-Trennung
Verwenden Sie separate Fess-Instanzen und Indizes fuer jeden Mandanten:
# Mandant-1-Fess-Instanz (fess_config.properties)
index.document.search.index=fess_tenant1.search
# Mandant-2-Fess-Instanz (fess_config.properties)
index.document.search.index=fess_tenant2.search
Bemerkung
index.document.search.index kann nur auf einen Wert pro Instanz gesetzt werden. Fuer eine vollstaendige Trennung auf Index-Ebene muessen Sie separate Fess-Instanzen pro Mandant betreiben oder benutzerdefinierten Code implementieren. Fuer typische Multitenancy reicht die logische Trennung ueber die Virtual-Host-Funktion aus.
Best Practices
Klare Namenskonventionen: Verwenden Sie konsistente Namenskonventionen fuer Virtual Hosts und Rollen
Testen: Testen Sie die Operationen auf jedem Mandanten gruendlich
Ueberwachung: Ueberwachen Sie die Ressourcennutzung fuer jeden Mandanten
Dokumentation: Dokumentieren Sie Mandantenkonfigurationen
Einschraenkungen
Das Admin-Panel wird von allen Mandanten gemeinsam genutzt
Systemeinstellungen betreffen alle Mandanten
Einige Funktionen unterstuetzen moeglicherweise keine Virtual Hosts
Referenzinformationen
Konfiguration rollenbasierter Suche - Rollenbasierte Zugriffskontrolle
Virtueller Host - Virtual-Host-Konfigurationsdetails
Seitendesign - Design-Anpassung