페이지 도메인 API

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed

GitLab Pages에서 사용자 정의 도메인 및 TLS 인증서를 연결하는 엔드포인트입니다.

이러한 엔드포인트를 사용하려면 GitLab Pages 기능을 활성화해야 합니다. 기능을 관리하는 방법에 대해 자세히 알아보세요. 관리사용.

모든 Pages 도메인 나열

전제 조건:

  • 인스턴스에 대한 관리자 액세스해야 합니다.

모든 Pages 도메인의 목록을 가져옵니다.

GET /pages/domains
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/pages/domains"
[
  {
    "domain": "ssl.domain.example",
    "url": "https://ssl.domain.example",
    "project_id": 1337,
    "auto_ssl_enabled": false,
    "certificate": {
      "expired": false,
      "expiration": "2020-04-12T14:32:00.000Z"
    }
  }
]

Pages 도메인 나열

프로젝트 Pages 도메인의 목록을 가져옵니다. 사용자는 Pages 도메인을 볼 수 있는 권한이 있어야 합니다.

GET /projects/:id/pages/domains
속성 유형 필수 설명
id integer/string yes 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-인코드된 경로
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/pages/domains"
[
  {
    "domain": "www.domain.example",
    "url": "http://www.domain.example"
  },
  {
    "domain": "ssl.domain.example",
    "url": "https://ssl.domain.example",
    "auto_ssl_enabled": false,
    "certificate": {
      "subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
      "expired": false,
      "certificate": "-----BEGIN CERTIFICATE-----\n\n-----END CERTIFICATE-----",
      "certificate_text": "Certificate:\n\n"
    }
  }
]

단일 Pages 도메인

프로젝트의 단일 Pages 도메인을 가져옵니다. 사용자는 Pages 도메인을 볼 수 있는 권한이 있어야 합니다.

GET /projects/:id/pages/domains/:domain
속성 유형 필수 설명
id integer/string yes 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-인코드된 경로
domain string yes 사용자가 지정한 사용자 정의 도메인
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/pages/domains/www.domain.example"
{
  "domain": "www.domain.example",
  "url": "http://www.domain.example"
}
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"
{
  "domain": "ssl.domain.example",
  "url": "https://ssl.domain.example",
  "auto_ssl_enabled": false,
  "certificate": {
    "subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
    "expired": false,
    "certificate": "-----BEGIN CERTIFICATE-----\n\n-----END CERTIFICATE-----",
    "certificate_text": "Certificate:\n\n"
  }
}

새로운 Pages 도메인 생성

새로운 Pages 도메인을 생성합니다. 사용자는 새로운 Pages 도메인을 생성할 권한이 있어야 합니다.

POST /projects/:id/pages/domains
속성 유형 필수 설명
id integer/string yes 인증된 사용자가 소유한 프로젝트의 ID 또는 URL-인코드된 경로
domain string yes 사용자가 지정한 사용자 정의 도메인
auto_ssl_enabled boolean no 사용자 정의 도메인에 대해 Let’s Encrypt에서 발급한 SSL 인증서의 자동 생성을 활성화합니다.
certificate file/string no 중간 자료로 시작하여 가장 구체적인 순서로 PEM 형식의 인증서입니다.
key file/string no PEM 형식의 인증서 키입니다.

.pem 파일에서 인증서를 포함하여 새로운 Pages 도메인을 생성합니다.

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "domain=ssl.domain.example" --form "certificate=@/path/to/cert.pem" \
     --form "key=@/path/to/key.pem" "https://gitlab.example.com/api/v4/projects/5/pages/domains"

변수를 사용하여 인증서를 포함하여 새로운 Pages 도메인을 생성합니다.

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "domain=ssl.domain.example" --form "certificate=$CERT_PEM" \
     --form "key=$KEY_PEM" "https://gitlab.example.com/api/v4/projects/5/pages/domains"

자동 인증서를 사용하여 새로운 Pages 도메인을 생성합니다.

curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" --form "domain=ssl.domain.example" \
     --form "auto_ssl_enabled=true" "https://gitlab.example.com/api/v4/projects/5/pages/domains"
{
  "domain": "ssl.domain.example",
  "url": "https://ssl.domain.example",
  "auto_ssl_enabled": true,
  "certificate": {
    "subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
    "expired": false,
    "certificate": "-----BEGIN CERTIFICATE-----\n\n-----END CERTIFICATE-----",
    "certificate_text": "Certificate:\n\n"
  }
}

페이지 도메인 업데이트

기존 프로젝트 페이지 도메인을 업데이트합니다. 사용자는 기존 페이지 도메인을 변경할 수 있는 권한이 필요합니다.

PUT /projects/:id/pages/domains/:domain
속성 유형 필수 여부 설명
id integer/string yes 인증된 사용자가 소유한 프로젝트의 ID 또는 URL 인코딩된 경로
domain string yes 사용자가 지정한 사용자 정의 도메인
auto_ssl_enabled boolean no 사용자 정의 도메인을 위해 Let’s Encrypt에 의해 발급된 SSL 인증서의 자동 생성을 활성화합니다.
certificate file/string no 최상위부터 최하위 순서로 중간 인증서가 따르는 PEM 형식의 인증서
key file/string no PEM 형식의 인증서 키

인증서 추가

.pem 파일에서 페이지 도메인을 위해 인증서를 추가합니다:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" --form "certificate=@/path/to/cert.pem" \
     --form "key=@/path/to/key.pem" "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"

인증서를 사용하여 페이지 도메인에 인증서를 추가하는 방법:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" --form "certificate=$CERT_PEM" \
     --form "key=$KEY_PEM" "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"
{
  "domain": "ssl.domain.example",
  "url": "https://ssl.domain.example",
  "auto_ssl_enabled": false,
  "certificate": {
    "subject": "/O=Example, Inc./OU=Example Origin CA/CN=Example Origin Certificate",
    "expired": false,
    "certificate": "-----BEGIN CERTIFICATE-----\n\n-----END CERTIFICATE-----",
    "certificate_text": "Certificate:\n\n"
  }
}

페이지 사용자 정의 도메인을 위한 Let’s Encrypt 통합 활성화

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "auto_ssl_enabled=true" "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"
{
  "domain": "ssl.domain.example",
  "url": "https://ssl.domain.example",
  "auto_ssl_enabled": true
}

인증서 제거

페이지 도메인에 연결된 SSL 인증서를 제거하려면 다음을 실행합니다:

curl --request PUT --header "PRIVATE-TOKEN: <your_access_token>" --form "certificate=" \
     --form "key=" "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"
{
  "domain": "ssl.domain.example",
  "url": "https://ssl.domain.example",
  "auto_ssl_enabled": false
}

페이지 도메인 삭제

기존 프로젝트 페이지 도메인을 삭제합니다.

DELETE /projects/:id/pages/domains/:domain
Attribute Type Required Description
id integer/string yes 인증된 사용자가 소유한 프로젝트의 ID 또는 URL 인코딩된 경로
domain string yes 사용자가 지정한 사용자 정의 도메인
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/5/pages/domains/ssl.domain.example"