AWS ALBは複数種類のサーバに転送できるか?例えばwebとapiとか

AWSのロードバランサー(ALB)は、バックエンドのサーバーに転送が可能です。
ただ、一つのALBで、一つの種類のサーバー(例えばweb)のみしか転送できないのでしょうか?

環境・前提条件

AWSのロードバランサーALBを利用。
バックエンドには、EC2のwebサーバーとapiサーバーを用意する予定とする。

結論、1つのALBで複数種類のサーバーをロードバランスできます!

結論としましては、1つのALBを利用して複数種類のサーバー(例えば、webサーバとAPIサーバー)をロードバランス出来ます。

ALBの転送・リダイレクト・固定レスポンスルールの条件

ALBの条件に、

  • ホストヘッダー(httpリクエスト時のhostヘッダー。Virtual Hostと同じ意味)
  • パス

でルールを分けることが出来、ルールを複数作ることにより、複数種類のサーバーに転送することが出来ます。
条件は、ホストヘッダーかつパスすべてに一致した場合のルールも作成できます。

ルール条件のアクションとしては、

  • 転送先
  • リダイレクト先
  • 固定レスポンスを返す

ことが出来ます。

例えば、
webサーバーとapiサーバーをホストヘッダーで別の
Virtual Host として一つのALBで動作させることも出来ますし、
apiサーバーは/api/*のパスのURLだけリバースプロキシ的に転送することも出来ます。
apacheでの Virtual Hostやリバースプロキシの設定はALBで代用でき不要になりますね。

httpアクセスが来たらhttpsへリダイレクトすることもALBで可能

元のホストへリダイレクトすることも出来ますし、
カスタムホスト(別のホスト) にリダイレクトする ことも、パスやクエリも多少のカスタムは可能そうです。

残念ながら転送先をS3にしたりリバースプロキシは出来ない

S3への転送先の設定やS3へのリバースプロキシ設定が出来たら良かったのですが、残念ながら現状では転送先はターゲットグループ(EC2)しか出来なかったです。
画像等のS3へのリバースプロキシを使用するためには、ALBでは足りずCloudfrontが必要なんですね。

参考までにhttpsではアクションに認証もある

これは例えば、googleのアカウントでユーザー認証したユーザーのみサイトにアクセスさせたい場合等に使用できます。

  • Amazon Cognito
  • OIDC(OpenID Connect)

が使用です来ます。OpenID連携ですね!
AWSのロードバランサーALBは そこまで進化していたんですね。

意外といろいろ出来ますね!AWSのロードバランサーALB


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です