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

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

始める前に

  • URL の書き換えについて確認します。

  • 特に、一般的な URL マップパスマッチャーについて確認します。

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

    この例では、次の 2 つのリソースを作成します。

    • 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. [アクション] で、[トラフィックを 1 つのバックエンドにルーティング] を選択します。
  7. [アドオン アクション(URL 書き換え)] をクリックします。
  8. [ホストの書き換え] は空白のままにします。
  9. [パス プレフィックスの書き換え] に「/love-to-fetch/」と入力します。
  10. [バックエンド] で、[dogs] を選択します。
  11. [保存] をクリックします。
  12. [完了] をクリックします。 新しいホストとパスのルールは次のようになります。

    パス アクション バックエンド
    一致しないすべての URL パス(デフォルト) トラフィックを 1 つのバックエンドにルーティング
    /* トラフィックを 1 つのバックエンドにルーティング

  13. すべて問題なければ、[更新] をクリックして HTTP ロードバランサを更新します。

gcloud

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

    ユーザーがパス /* をリクエストすると、パスはコンテンツの実際の場所である /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
    tests:
    - description: Test routing to backend bucket, dogs
      host: example.com
      path: /love-to-fetch/test
      service: https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendBuckets/dogs
    
  2. URL マップを検証します。

    gcloud compute url-maps validate --source /tmp/http-lb.yaml
    

    テストに合格し、コマンドによって成功メッセージが出力された場合は、URL マップに変更を保存します。

  3. 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 を開きます。

次のステップ