gcpのloadbalancerにてパスの振り分けでcdnにアクセスした際に404

loadbalancerではurlに応じてbackendを振りわけることが可能で、例えば以下のような設定ができる。

https://example.com/app/* -> app serverとなるcloudrunのインスタンスへ
https://example.com/web/* -> cloud storageへ

以下のurlにアクセスしたとき

https://example.com/web/aaa/bbb.txt

cloud storageにアクセスがいくが、取得されるファイルはwebという名前のbucket内にあるディレクトリaaa直下のbbb.txtというファイルである。

loadbalancer側の設定としては上記に書いたように /web/* ならこちら、のような形の設定を行っているため、* の部分が展開されてbackend側で使われると勝手にイメージしていたが間違いだった。

意図していた通りに*の部分だけをbackend側に渡したい場合、詳細設定に含まれる"パスの接頭辞の書き換えとして / を指定しておけばOK。

Cloud Load Balancingでマッチしたパスを特定のサービスに振り分ける

terraformでの設定なら path_prefix_rewrite を設定しておけばよい。

https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_url_map#path_prefix_rewrite