外部 HTTP(S) ロードバランサの URL の書き換えの設定

次の例では、リクエストで指定されたパスの書き換えについて説明します。

始める前に

URL 書き換えの例では、Cloud Storage バケットを使用したロードバランサの設定方法で概説されている手順に従って、外部 HTTP(S) ロードバランサを作成済みであることを前提としています。

この例では、次の 2 つの 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. [アクション] で、[トラフィックを 1 つのバックエンドにルーティング] を選択します。
  7. [パス プレフィックスの書き換え] に「/static/eu/」と入力します。
  8. [バックエンド] で、[backend-bucket2] を選択します。
  9. [保存] をクリックします。

確認と完了

  1. 左側のパネルで、[確認と完了] をクリックします。
  2. 現在の設定と作成しようとしている内容を比較します。
  3. すべて問題なければ、[更新] をクリックして HTTP ロードバランサを作成します。

gcloud

  1. YAML ファイル /tmp/http-lb.yaml を作成します。[project-id] はプロジェクト ID に置き換えてください。

    ユーザーがパス /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 を開きます。