맞춤 도메인 매핑

App Engine이 앱에 제공하는 기본 주소가 아닌 커스텀 도메인을 사용할 수 있습니다.

커스텀 도메인을 사용하려면 도메인을 앱에 매핑한 다음 DNS 레코드를 업데이트합니다. example.com과 같은 네이키드 도메인 또는 subdomain.example.com과 같은 하위 도메인을 매핑할 수 있습니다. 와일드 카드를 사용하여 하위 도메인을 매핑할 수도 있습니다.

기본적으로 도메인을 앱에 매핑하면 App Engine은 HTTPS 연결에 사용할 SSL용 관리형 인증서를 발급합니다. 자체 SSL 인증서를 사용하는 방법을 포함하여 커스텀 도메인에서 SSL을 사용하는 방법에 대한 자세한 내용은 SSL로 커스텀 도메인 보호를 참조하세요.

커스텀 도메인을 사용하면 App Engine에서 일부 리전의 앱 사용자에게 보내는 응답이 많이 지연될 수 있습니다. 해당되는 리전은 다음과 같습니다.

  • us-west2
  • us-east4
  • northamerica-northeast1
  • southamerica-east1
  • europe-west2
  • europe-west3
  • asia-south1
  • asia-northeast1
  • australia-southeast1

App Engine 커스텀 도메인은 모든 애플리케이션의 공유 IP 주소 풀을 사용합니다. 도메인에만 매핑되는 IP 주소를 사용하려면 대신 App Engine을 사용하여 부하 분산기를 설정해야 합니다. 이를 통해 SNI 인증서의 애플리케이션 A에 대한 요청이 HTTP 호스트 헤더의 애플리케이션 B로 라우팅될 수 있는 도메인 프론팅 문제가 완화될 수 있습니다.

시작하기 전에

  • 도메인이 없는 경우 하나를 구입합니다. 모든 도메인 이름 등록기관을 사용할 수 있지만 Google Domains를 사용하면 도메인이 App Engine에서 자동으로 확인되므로 도메인 확인 절차를 거칠 필요가 없습니다.

  • 커스텀 도메인 매핑을 추가하거나 수정하려면 계정에 App Engine 관리자 역할(roles/appengine.appAdmin) 또는 appengine.applications.get 권한이 포함된 커스텀 역할이 있어야 합니다.

  • Cloud Load Balancing과 서버리스 NEGS를 사용하여 트래픽을 App Engine 앱으로 라우팅하는 경우 커스텀 도메인을 직접 앱이 아닌 부하 분산기에 매핑하고 부하 분산기에 생성된 SSL 인증서를 사용하는 것이 좋습니다. 이렇게 하면 서버리스 앱마다 별도의 SSL 인증서를 관리할 필요가 없습니다. 또한 Cloud Load Balancing을 사용하면 SSL 정책을 설정하여 부하 분산기가 클라이언트와 협상하는 SSL 기능을 제어할 수 있습니다. 자세한 내용은 다음 페이지를 참조하세요.

    다음과 같은 제한사항이 있습니다.

    • 앱이 부하 분산기(및 사용하는 경우 VPC)에서 전송되는 요청만 수신하도록 인그레스 제어를 사용하는 것이 좋습니다. 그렇지 않으면 사용자가 앱의 App Engine URL을 사용하여 부하 분산기를 통해 전달되는 부하 분산기, Google Cloud Armor 보안 정책, SSL 인증서, 비공개 키를 우회할 수 있습니다.

커스텀 도메인을 앱에 매핑

  1. Google Cloud 콘솔에서 App Engine 설정 페이지의 애플리케이션 설정 탭으로 이동합니다.

    애플리케이션 설정 페이지로 이동

    기본 Google Accounts API 리퍼러를 수정할 필요가 없다면 다음 단계로 이동합니다.

    커스텀 도메인에 Google Workspace 인증을 사용 설정해야 하는 경우 수정을 클릭하여 Google Accounts API 리퍼러를 수정합니다. Google 인증 드롭다운 메뉴에서 Google Workspace 도메인을 선택한 다음 빈 필드에 example.com과 같은 도메인을 추가합니다.

  2. Google Cloud 콘솔에서 App Engine 설정 페이지의 커스텀 도메인 탭으로 이동합니다.

    커스텀 도메인 페이지로 이동

  3. 커스텀 도메인 추가를 클릭합니다.

  4. 도메인이 이미 확인된 경우 사용할 도메인 선택 섹션에 도메인이 표시됩니다. 드롭다운 메뉴에서 도메인을 선택하고 계속을 클릭합니다.

    아직 도메인을 확인하지 않은 경우 다음 단계를 따르세요.

    1. 드롭다운 메뉴에서 새 도메인 확인을 선택합니다.
    2. 네이키드 도메인 이름(예: 'example.com')을 입력하고 확인을 클릭합니다.

      'www.subdomain.example.com'과 같은 하위 도메인만 매핑하려는 경우 네이키드 도메인 이름을 입력하여 소유권을 확인합니다.

      도메인 이름은 64바이트 미만이어야 합니다.

    3. 표시되는 Search Console 창에 정보를 입력합니다. Search Console 사용에 대한 도움말은 Search Console 도움말을 참조하세요.

    4. Search Console에서 단계를 완료한 후 Google Cloud 콘솔에서 새 커스텀 도메인 추가 페이지로 돌아갑니다.

  5. 도메인을 [project-ID] 섹션으로 지정하고 매핑할 도메인과 하위 도메인을 지정합니다.

    네이키드 도메인과 www 하위 도메인을 매핑하는 것이 좋습니다. 필요한 경우 더 많은 하위 도메인을 추가할 수 있습니다.

    원하는 매핑을 모두 추가했으면 매핑 저장을 클릭합니다.

  6. 도메인의 DNS 레코드를 보려면 계속을 클릭합니다.

    App Engine 설정 페이지의 커스텀 도메인 탭에서 언제든지 이 레코드를 검색할 수 있습니다.

  7. 도메인 등록기관 웹사이트에 로그인하고 이전 단계에서 표시된 레코드로 DNS 레코드를 업데이트합니다.

도메인 등록기관에서 DNS 레코드 업데이트

App Engine의 커스텀 도메인에 서비스를 매핑한 다음 도메인 등록기관의 DNS 레코드를 업데이트해야 합니다. App Engine은 편의를 위해 입력해야 하는 DNS 레코드를 생성하고 표시합니다.

  1. 도메인 매핑에 대한 DNS 레코드 정보를 가져옵니다.

    Google Cloud 콘솔에서 App Engine 설정 페이지의 커스텀 도메인 탭으로 이동합니다. 페이지에는 앱에 매핑한 모든 도메인의 DNS 레코드가 표시됩니다.

  2. 도메인 등록기관의 계정에 로그인하고 DNS 구성 페이지를 엽니다.

  3. 도메인 구성 페이지의 호스트 레코드 섹션을 찾고 도메인을 앱에 매핑할 때 가져온 각 DNS 레코드를 추가합니다.

    레코드 필드에 다음 정보를 입력합니다.

    • 레코드 유형: Google에서 만든 DNS 레코드에 표시되는 레코드 유형을 입력합니다(A 또는 AAAA 또는 CNAME).
    • 레코드 이름:
      • A 또는 AAAA 레코드에서 @을 입력합니다.
      • CNAME 레코드에 세 번째 수준의 도메인 이름을 입력합니다. 예를 들어 www.example.com 하위 도메인을 매핑하려면 www를 입력합니다.
    • TTL: 필요에 따라 TTL을 지정합니다.
    • 데이터: Google에서 만든 DNS 레코드에 표시되는 레코드 데이터(rrdata)를 입력합니다.
      • A 또는 AAAA 레코드에서 레코드 데이터는 IP 주소입니다.
      • CNAME 레코드에서 레코드 데이터는 도메인 이름입니다.
  4. 도메인 계정의 DNS 구성 페이지에 변경사항을 저장합니다. 대부분의 경우 변경사항이 적용되는 데 몇 분 정도 걸리지만 도메인에 대한 이전 DNS 레코드의 등록기관 및 TTL(수명)에 따라 몇 시간이 걸릴 수도 있습니다. 이 온라인 dig 버전과 같이 dig 도구를 사용하여 DNS 레코드가 성공적으로 업데이트되었는지 확인할 수 있습니다.

  5. 새 URL(예: https://www.example.com)을 통해 서비스를 탐색하여 성공 여부를 테스트합니다. 자동 SSL 인증서를 발급하는 데 몇 분 정도 걸릴 수 있습니다.

다른 Google Cloud 사용자 또는 서비스 계정에 소유권 위임

도메인 소유권을 다른 사용자나 서비스 계정에 위임해야 하는 경우 Search Console 페이지를 통해 권한을 추가할 수 있습니다.

  1. Search Console 확인 페이지를 엽니다.

  2. 속성에서 사용자 또는 서비스 계정을 추가할 도메인을 클릭합니다.

  3. 확인된 소유자 목록 끝에서 소유자 추가를 클릭한 다음 Google 계정 이메일 주소 또는 서비스 계정 ID를 입력합니다.

    서비스 계정 목록을 보려면 Google Cloud 콘솔에서 서비스 계정 페이지를 엽니다.

    서비스 계정 페이지로 이동

하위 도메인 사용

커스텀 도메인에 와일드 카드 하위 도메인 매핑을 설정하면 애플리케이션이 일치하는 모든 하위 도메인에 대한 요청을 처리합니다.

  • 사용자가 애플리케이션 버전 이름 또는 서비스 이름과 일치하는 도메인을 탐색하면 애플리케이션에서 해당 버전을 제공합니다.
  • 사용자가 서비스 이름과 일치하는 도메인을 탐색하면 애플리케이션에서 해당 서비스를 제공합니다.
  • 기본 도메인마다 관리형 SSL 인증서는 매주 20개로 제한됩니다. 한도에 도달해도 App Engine은 모든 요청이 처리될 때까지 관리형 인증서 발급을 계속 시도합니다.

와일드 카드 매핑

세 번째 수준의 하위 도메인부터 시작하여 모든 수준에서 와일드 카드를 사용하여 하위 도메인을 매핑할 수 있습니다. 예를 들어 도메인이 example.com인 경우 웹 주소 필드에 텍스트를 입력하면 다음과 같이 매핑됩니다.

  • *.example.com을 입력하면 example.com의 모든 하위 도메인이 앱에 매핑됩니다.
  • *.private.example.com을 입력하면 private.example.com의 모든 하위 도메인이 앱에 매핑됩니다.
  • *.nichol.sharks.nhl.example.com을 입력하면 nichol.sharks.nhl.example.com의 모든 하위 도메인이 앱에 매핑됩니다.
  • *.excogitate.system.example.com을 입력하면 excogitate.system.example.com의 모든 하위 도메인이 앱에 매핑됩니다.

dispatch.yaml 파일을 사용하여 App Engine의 서비스에 와일드 카드 매핑을 사용하면 특정 서비스에 대한 요청 라우팅을 정의할 수 있습니다.

Google Workspace를 도메인의 다른 하위 도메인(예: sitesmail)과 함께 사용하면 이 매핑의 우선순위가 높아지고 와일드 카드 매핑이 진행되기 전에 먼저 매핑 일치 여부가 확인됩니다. 또한 다른 App Engine 앱이 다른 하위 도메인에 매핑되어 있으면 이러한 매핑도 와일드 카드 매핑보다 더 높은 우선순위를 갖습니다.

일부 DNS 제공업체는 와일드 카드 하위 도메인 매핑을 지원하지 않습니다. 특히 DNS 제공업체가 CNAME 호스트 항목에 와일드 카드를 허용해야 합니다.

서비스, 버전, 인스턴스 구성요소를 포함하는 URL에 App Engine의 서비스 라우팅 규칙에 따라 와일드 카드 라우팅 규칙이 적용됩니다.

앱에서 커스텀 도메인 삭제

앱에서 커스텀 도메인 매핑을 삭제하려면 계정에 App Engine 관리자 역할(roles/appengine.appAdmin) 또는 appengine.applications.update 권한이 포함된 커스텀 역할이 필요합니다.

Google Cloud 콘솔에서 다음을 수행합니다.

  1. App Engine 설정 페이지의 커스텀 도메인 탭으로 이동합니다.

    커스텀 도메인 페이지로 이동

  2. 커스텀 도메인 이름을 선택하고 삭제를 클릭합니다.

또는 gcloud 명령어 또는 Admin API를 사용하여 커스텀 도메인을 삭제할 수 있습니다.

문제 해결하기

G Suite 도메인 인증으로 커스텀 도메인을 구성한 후 앱에 인증 오류가 표시되면 커스텀 도메인 매핑을 삭제하고 커스텀 도메인을 앱에 매핑 단계를 다시 실행합니다. App Engine에서 커스텀 도메인 매핑을 구성하기 전에 G Suite 도메인 인증을 구성해야 합니다.

다음 단계

SSL로 커스텀 도메인 보호