🐥
Google Load Balancingでリダイレクトしたかった時に困ったこと
Next.js + Rails + GCPで既存のアプリケーションのリプレイスをしており
一部はLoad Balancingを利用して、新しいアプリケーションにパスベースで振り分けている状態でした。
単純なホストとパスのルールで(以下の例はurlMapでの記述になります)
Cloud Run上で動いているNext.jsアプリケーションに向けるため以下のように例えばしていました。
pathRules:
- paths:
- /columns/*
service: projects/[project]/global/backendServices/[backend service name]
- paths:
- /columns
service: projects/[project]/global/backendServices/[backend service name]
- paths:
- /_next/*
service: projects/[project]/global/backendServices/[backend service name]
でこの状態で/columns/888は別のサイトにリダイレクトしたいよという要望がありました。
まあまあできるでしょと、ドキュメントのこのページを参照
はいはい、routeRulesねと。
しかし1つのパスマッチャーの中にpathRulesとrouteRulesが同居できないことが判明しました。
パスマッチャーのホストを*とhogehoge.jpで分けることでできるといえばできるけど、弊害が出そうなので、さらに探索すると。
pathRulesにもurlRedirectございました。
pathRules:
- paths:
- /columns/*
service: projects/[project]/global/backendServices/[backend service name]
- paths:
- /columns
service: projects/[project]/global/backendServices/[backend service name]
- paths:
- /_next/*
service: projects/[project]/global/backendServices/[backend service name]
- paths:
- /columns/888
urlRedirect:
hostRedirect: corporatesite.hogehoge.com
pathRedirect: /columns/888
routeRulesは細かいパスマッチを指定できるようです。headerの内容によるパスマッチとか。
しかし同居できないので、細かいパスマッチからのリダイレクトが必要になりそうなら最初からrouteRulesで記述しておくことが必要なんだろうか。
Discussion