従来のアプリケーション ロードバランサに URL 書き換えを設定する

次の例では、従来のアプリケーション ロードバランサのリクエストで指定されたパスの書き換えについて説明します。

グローバル外部アプリケーション ロードバランサとリージョン外部アプリケーション ロードバランサのトラフィック管理を構成するには、次のページをご覧ください。

始める前に

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

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

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

    この例では、次の 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 コンソールの [ロード バランシング] ページに移動します。
    [ロード バランシング] ページに移動
  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 つのバックエンドにルーティング cats
    /* トラフィックを 1 つのバックエンドにルーティング dogs

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

次のステップ