외부 HTTP(S) 부하 분산기의 URL 재작성 설정

이 예시는 요청에 지정된 경로를 재작성하는 방법을 보여줍니다.

시작하기 전에

URL 재작성 예시에서는 Cloud Storage 버킷으로 부하 분산기 설정에 설명된 단계에 따라 외부 HTTP(S) 부하 분산기를 이미 만들었다고 가정합니다.

해당 예시를 통해 다음 두 가지 URL을 생성합니다.

  • http://[IP_ADDRESS]/static/us/three-cats.jpg
  • http://[IP_ADDRESS]/static/eu/two-dogs.jpg

여기서 /static/us/three-cats.jpg는 기본 서비스인 backend-bucket1에 저장되고 /static/eu/two-dogs.jpgbackend-bucket2에 저장됩니다.

이 시점에서 URL 맵은 다음과 같습니다.

gcloud compute url-maps describe http-lb
creationTimestamp: '2020-03-24T15:28:39.637-07:00'
defaultService: https://www.googleapis.com/compute/v1/projects/[project-id]/global/backendBuckets/backend-bucket1
fingerprint: d8wZnrXtAJE=
hostRules:
- hosts:
  - '*'
  pathMatcher: path-matcher-1
id: '2488162556319315832'
kind: compute#urlMap
name: http-lb
pathMatchers:
- defaultService: https://www.googleapis.com/compute/v1/projects/[project-id]/global/backendBuckets/backend-bucket1
  name: path-matcher-1
  pathRules:
  - paths:
    - /static/eu/*
    service: https://www.googleapis.com/compute/v1/projects/[project-id]/global/backendBuckets/backend-bucket2
selfLink: https://www.googleapis.com/compute/v1/projects/[project-id]/global/urlMaps/http-lb

URL 맵 수정

이 예시에서는 사용자가 다음과 같은 약식 URL로 two-dogs.jpg 이미지에 도달할 수 있도록 /static/eu/ URL을 다시 작성합니다.

  • http://34.102.204.68/eu/two-dogs.jpg

이렇게 하려면 부하 분산기의 URL 맵을 다음과 같이 수정합니다.

Console

부하 분산기 수정

  1. Google Cloud Console의 부하 분산 페이지로 이동합니다.
    부하 분산 페이지로 이동
  2. http-lb를 클릭합니다.
  3. 수정 을 클릭합니다.
  4. 계속하려면 창을 열어둡니다.

호스트 및 경로 규칙 변경

  1. 화면의 왼쪽 열에서 호스트 및 경로 규칙을 클릭합니다.
  2. 고급 호스트 및 경로 규칙(URL 리디렉션, URL 재작성)을 선택합니다.
  3. 기본이 아닌 호스트 및 경로 규칙의 경우 수정 을 클릭합니다.
  4. backend-bucket2 옆의 수정 을 클릭합니다.
  5. 경로/eu/를 입력합니다.
  6. 작업에서 단일 백엔드로 트래픽 라우팅을 선택합니다.
  7. 경로 프리픽스 재작성/static/eu/를 입력합니다.
  8. 백엔드에서 backend-bucket2를 선택합니다.
  9. 저장을 클릭합니다.

검토 및 완료

  1. 왼쪽 패널에서 검토 및 완료를 클릭합니다.
  2. 만들려던 설정과 현재 설정을 비교합니다.
  3. 모든 설정이 올바른 것으로 확인되면 업데이트를 클릭하여 HTTP 부하 분산기를 만듭니다.

gcloud

  1. [project-id]를 프로젝트 ID로 바꿔 YAML 파일 /tmp/http-lb.yaml을 만듭니다.

    사용자가 /eu/* 경로를 요청하면 백엔드에서 콘텐츠의 실제 위치인 /static/eu/*로 경로가 다시 작성됩니다.

    defaultService: https://www.googleapis.com/compute/v1/projects/[project-id]/global/backendBuckets/backend-bucket1
    hostRules:
    - hosts:
      - '*'
      pathMatcher: path-matcher-1
    kind: compute#urlMap
    name: http-lb
    pathMatchers:
    - defaultService: https://www.googleapis.com/compute/v1/projects/[project-id]/global/backendBuckets/backend-bucket1
      name: path-matcher-1
      pathRules:
      - paths:
        - /eu/
        routeAction:
          urlRewrite:
            pathPrefixRewrite: /static/eu/
        service: https://www.googleapis.com/compute/v1/projects/[project-id]/global/backendBuckets/backend-bucket2
    selfLink: https://www.googleapis.com/compute/v1/projects/[project-id]/global/urlMaps/http-lb
    
  2. URL 맵을 업데이트합니다.

    gcloud compute url-maps import http-lb \
       --source /tmp/http-lb.yaml \
       --global
    

테스트

예약된 IPv4 주소를 확인합니다.

gcloud compute addresses describe example-ip \
    --format="get(address)" \
    --global

다음을 실행하여 이 설정을 테스트합니다.

curl http://[IP_ADDRESS]/eu/two-dogs.jpg

브라우저에서 http://[IP_ADDRESS]/eu/two-dogs.jpg를 엽니다.