次の例では、従来のアプリケーション ロードバランサのリクエストで指定されたパスの書き換えについて説明します。
グローバル外部アプリケーション ロードバランサとリージョン外部アプリケーション ロードバランサのトラフィック管理を構成するには、次のページをご覧ください。
始める前に
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
ロードバランサを編集する
- Google Cloud コンソールの [ロード バランシング] ページに移動します。
[ロード バランシング] ページに移動 - [
http-lb
] をクリックします。 - [編集] をクリックします。
- ウィンドウを開いたままにして続行します。
ホストとパスのルールを変更する
- 画面の左の列で、[ホストとパスのルール] をクリックします。
- [詳細なホストとパスのルール(URL リダイレクト、URL の書き換え)] を選択します。
- デフォルト以外のパスルールを含む行をクリックします。この例では、すべてのホストにアスタリスク(
*
)がある行です。 /love-to-fetch/* Route traffic to a single backend: dogs
行の鉛筆アイコン をクリックします。- [パス] で
/love-to-fetch/*
を削除し、/*
を追加します。 - [アクション] で、[トラフィックを 1 つのバックエンドにルーティング] を選択します。
- [アドオン アクション(URL 書き換え)] をクリックします。
- [ホストの書き換え] は空白のままにします。
- [パス プレフィックスの書き換え] に「
/love-to-fetch/
」と入力します。 - [バックエンド] で、[
dogs
] を選択します。 - [保存] をクリックします。
[完了] をクリックします。 新しいホストとパスのルールは次のようになります。
パス アクション バックエンド 一致しないすべての URL パス(デフォルト) トラフィックを 1 つのバックエンドにルーティング cats /* トラフィックを 1 つのバックエンドにルーティング dogs すべて問題なければ、[更新] をクリックして HTTP ロードバランサを更新します。
gcloud
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
URL マップを検証します。
gcloud compute url-maps validate --source /tmp/http-lb.yaml
テストに合格し、コマンドによって成功メッセージが出力された場合は、URL マップに変更を保存します。
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
を開きます。