정적 객체용 외부 리포지터리
GitLab을 구성하여 아카이브 또는 원본 블롭과 같은 리포지터리 정적 객체를 외부 리포지터리(콘텐츠 전달 네트워크(CDN) 등)에서 제공하도록 구성합니다.
외부 리포지터리 구성
정적 객체를 위해 외부 리포지터리를 구성하려면 다음을 수행합니다:
- 왼쪽 사이드바에서 맨 아래에서 관리 영역을 선택합니다.
- 설정 > 리포지터리를 선택합니다.
- 리포지터리 정적 객체를 위한 외부 리포지터리를 확장합니다.
- 기본 URL 및 임의의 토큰을 입력합니다. 외부 리포지터리 설정을 수행할 때, 이러한 값을
ORIGIN_HOSTNAME
및STORAGE_TOKEN
으로 설정하는 스크립트를 사용합니다. - 변경 사항 저장을 선택합니다.
이 토큰은 외부 리포지터리에서 오는 요청을 구별하기 위해 필요하며, 사용자가 외부 리포지터리를 우회하고 응용 프로그램에 직접 액세스하지 못하도록 합니다. GitLab은 외부 리포지터리에서 유래한 요청의 X-Gitlab-External-Storage-Token
헤더에 이 토큰이 설정되기를 예상합니다.
개인 정적 객체 제공
GitLab은 개인 프로젝트에 속하는 정적 객체 URL에 대해 사용자별 토큰을 추가하여 외부 리포지터리가 사용자를 대신 인증할 수 있도록합니다.
외부 리포지터리에서 유래한 요청을 처리할 때, GitLab은 사용자가 요청한 객체에 액세스할 수 있는지 확인하기 위해 다음을 확인합니다:
-
token
쿼리 매개변수 -
X-Gitlab-Static-Object-Token
헤더
요청 흐름 예시
다음 예시에서 요청과 응답의 시퀀스를 보여줍니다:
- 사용자
- GitLab
- 콘텐츠 전달 네트워크
외부 리포지터리 설정
이 절차는 외부 리포지터리로 Cloudflare Workers를 사용하지만, 다른 CDN이나 FaaS(FaaS) 시스템도 같은 원리를 사용하여 작동할 수 있어야 합니다.
- 아직 수행하지 않았다면 Cloudflare Worker 도메인을 선택합니다.
-
다음 스크립트에서 첫 두 상수에 대한 다음 값을 설정합니다:
-
ORIGIN_HOSTNAME
: GitLab 설치의 호스트 이름입니다. -
STORAGE_TOKEN
: 임의의 안전한 토큰입니다. UNIX 머신에서pwgen -cn1 64
를 실행하여 토큰을 얻을 수 있습니다. 이를 구성 섹션에 설명된 대로 관리 영역에 저장합니다.const ORIGIN_HOSTNAME = 'gitlab.installation.com' // FIXME: SET CORRECT VALUE const STORAGE_TOKEN = 'very-secure-token' // FIXME: SET CORRECT VALUE const CACHE_PRIVATE_OBJECTS = false // ... (이하 생략)
-
- 이 스크립트로 새 워커를 만듭니다.
-
ORIGIN_HOSTNAME
및STORAGE_TOKEN
의 값을 복사합니다. 이 값을 사용하여 정적 객체용 외부 리포지터리를 구성합니다.