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

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

시작하기 전에

  • URL 재작성에 대해 알아보세요.

  • URL 맵 일반과 특히 경로 일치자에 대해 읽어보세요.

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

    해당 예시를 통해 다음 두 가지 리소스를 생성합니다.

    • http://IP_ADDRESS/never-fetch/three-cats.jpg
    • http://IP_ADDRESS/love-to-fetch/two-dogs.jpg

    여기서 /never-fetch/three-cats.jpg는 기본 서비스인 /cats에 저장되고 /love-to-fetch/two-dogs.jpg/dogs에 저장됩니다.

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

    gcloud compute url-maps describe http-lb
    
    creationTimestamp: '2020-10-13T11:18:10.561-07:00'
    defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats
    fingerprint: MKfYsObzqgw=
    hostRules:
    - hosts:
      - '*'
      pathMatcher: path-matcher-1
    id: '1420501688756228493'
    kind: compute#urlMap
    name: test-bucket
    pathMatchers:
    - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats
      name: path-matcher-1
      pathRules:
      - paths:
        - /love-to-fetch/*
        service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/urlMaps/http-lb
    

URL 맵 수정

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

  • http://IP_ADDRESS/two-dogs.jpg

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

Console

부하 분산기 수정

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

호스트 및 경로 규칙 변경

  1. 화면의 왼쪽 열에서 호스트 및 경로 규칙을 클릭합니다.
  2. 고급 호스트 및 경로 규칙(URL 리디렉션, URL 재작성)을 선택합니다.
  3. 기본이 아닌 경로 규칙이 포함된 행을 클릭합니다. 이 경우 모든 호스트에 별표(*)가 있는 행을 클릭합니다.
  4. /love-to-fetch/* Route traffic to a single backend: dogs 행의 연필 아이콘 을 클릭합니다.
  5. 경로에서 /love-to-fetch/*를 삭제하고 /*를 추가합니다.
  6. 작업에서 단일 백엔드로 트래픽 라우팅을 선택합니다.
  7. 부가 작업(URL 재작성)을 클릭합니다.
  8. 호스트 재작성을 비워둡니다.
  9. 경로 프리픽스 재작성/love-to-fetch/를 입력합니다.
  10. 백엔드에서 dogs를 선택합니다.
  11. 저장을 클릭합니다.
  12. 완료를 클릭합니다. 새 호스트 및 경로 규칙은 다음과 같습니다.

    경로 작업 백엔드
    일치하지 않는 모든 항목(기본값) 단일 백엔드로 트래픽 라우팅 cats
    /* 단일 백엔드로 트래픽 라우팅 dogs

  13. 모든 설정이 올바른 것으로 확인되면 업데이트를 클릭하여 HTTP 부하 분산기를 업데이트합니다.

gcloud

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

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

    defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats
    hostRules:
    - hosts:
      - '*'
      pathMatcher: path-matcher-1
    name: http-lb
    pathMatchers:
    - defaultService: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/cats
      name: path-matcher-1
      pathRules:
      - paths:
        - /*
        routeAction:
          urlRewrite:
            pathPrefixRewrite: /love-to-fetch/
        service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs
    
  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 명령어를 실행합니다.

curl http://IP_ADDRESS/two-dogs.jpg

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

다음 단계