개요
|Fess|의 멀티테넌시 기능을 사용하면 단일 |Fess| 인스턴스에서 여러 테넌트(조직, 부서, 고객 등)를 분리하여 운영할 수 있습니다.
가상 호스트 기능을 사용하여 각 테넌트에 대해:
독립된 검색 UI
분리된 콘텐츠
커스터마이즈된 디자인
을 제공할 수 있습니다.
가상 호스트 기능
가상 호스트는 HTTP 요청의 호스트명에 따라 다른 검색 환경을 제공하는 기능입니다.
구조
가상 호스트 설정
관리 화면에서 설정
관리 화면에 로그인
“크롤러” -> “가상 호스트”로 이동
“새로 만들기” 클릭
다음을 설정:
호스트명:
tenant1.example.com경로: ``/tenant1``(선택사항)
크롤 설정과의 연계
웹 크롤 설정에서 가상 호스트를 지정하여 콘텐츠를 분리할 수 있습니다:
“크롤러” -> “웹”에서 크롤 설정 생성
“가상 호스트” 필드에서 대상 가상 호스트 선택
이 설정으로 크롤된 콘텐츠는 지정한 가상 호스트에서만 검색 가능
접근 제어
가상 호스트와 역할의 조합
가상 호스트와 역할 기반 접근 제어를 조합하여 더 세밀한 접근 제어가 가능합니다:
# 설정 예
virtual.host=tenant1.example.com
permissions=role_tenant1_user
역할 기반 검색
자세한 내용은 :doc:`security-role`를 참조하세요.
UI 커스터마이즈
각 가상 호스트에 대해 UI를 커스터마이즈할 수 있습니다.
테마 적용
가상 호스트별로 다른 테마 적용:
“시스템” -> “디자인”에서 테마 설정
가상 호스트 설정에서 테마 지정
커스텀 CSS
가상 호스트별로 커스텀 CSS 적용:
# 가상 호스트 고유 CSS 파일
/webapp/WEB-INF/view/tenant1/css/custom.css
라벨 설정
가상 호스트별로 표시할 라벨 제한:
라벨 유형 설정에서 가상 호스트 지정
지정한 가상 호스트에서만 라벨이 표시됨
API 인증
가상 호스트별로 API 접근 제어:
액세스 토큰
가상 호스트에 연결된 액세스 토큰 발급:
“시스템” -> “액세스 토큰”에서 토큰 생성
토큰에 가상 호스트 연결
API 요청
curl -H "Authorization: Bearer TENANT_TOKEN" \
"https://tenant1.example.com/api/v1/search?q=keyword"
DNS 설정
멀티테넌시를 구현하기 위한 DNS 설정 예:
동일 서버로의 서브도메인
# DNS 설정
tenant1.example.com A 192.168.1.100
tenant2.example.com A 192.168.1.100
# 또는 와일드카드
*.example.com A 192.168.1.100
리버스 프록시 설정
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;
}
}
데이터 분리
완전한 데이터 분리가 필요한 경우 다음 접근 방식을 검토:
인덱스 레벨 분리
각 테넌트에 별도 인덱스 사용:
# 테넌트1용 인덱스
index.document.search.index=fess_tenant1.search
# 테넌트2용 인덱스
index.document.search.index=fess_tenant2.search
참고
인덱스 레벨 분리에는 커스텀 구현이 필요할 수 있습니다.
모범 사례
명확한 명명 규칙: 가상 호스트와 역할에 일관된 명명 규칙 사용
테스트: 각 테넌트에서의 동작을 충분히 테스트
모니터링: 테넌트별 리소스 사용량 모니터링
문서화: 테넌트 설정 문서화
제한 사항
관리 화면은 모든 테넌트에서 공유됩니다
시스템 설정은 모든 테넌트에 영향을 미칩니다
일부 기능은 가상 호스트에 대응하지 않을 수 있습니다
참고 정보
역할 기반 검색 설정 - 역할 기반 접근 제어
가상 호스트 - 가상 호스트 설정 상세
페이지 디자인 - 디자인 커스터마이즈