AWS ALB を HTTPS リダイレクトサーバ&メンテナンスサーバとして利用する
AWS の ALB (Application Load Balancer) に新機能がリリースされ、リダイレクトおよび固定レスポンスを返せるようになりました。 ※公式アナウンス
ALB 単体でレスポンスを返せるため、様々な活用法が考えられます。
- HTTPS へのリダイレクトに使用する
- メンテナンス時の静的ページを ALB から返す
$ curl -I http://example.yuu26.com/
HTTP/1.1 301 Moved Permanently
Server: awselb/2.0 ←←← ALB 単体でリダイレクトを返却できる!
Location: https://example.yuu26.com:443/
今回は example.yuu26.com
でアクセスできる ALB を作成して検証しました。
ALB の HTTPS リダイレクトを設定する
リスナーの設定にある「ルールの表示/編集」から入れます。HTTP: 80
の項目を変更。
画面上の鉛筆マーク、画面左の鉛筆マークとクリックし、編集画面を開きます。
今入っている転送先は不要なので、ゴミ箱マークで削除。
「アクションの追加」→「リダイレクト先」を選べば OK です。
転送先のポート番号は HTTPS なので「443」を入力。チェックマーク→更新 をクリックして保存。
curl で呼んでみると awselb/2.0
なるサーバでリダイレクトされたことが分かります。
$ curl -I http://example.yuu26.com/
HTTP/1.1 301 Moved Permanently
Server: awselb/2.0
Location: https://example.yuu26.com:443/
ALB をメンテナンスサーバとして利用する
次は、HTTPS のリスナーに固定ページを設定してみます。
「アクションの追加」→「固定レスポンスを返す」を選べば OK です。
任意のレスポンスコード、Content-Type、レスポンス本体の HTML を設定します。
上記で設定した内容のレスポンスが返ってくるようになりました。
$ curl --verbose https://example.yuu26.com/
HTTP/2 503
server: awselb/2.0
content-type: text/html; charset=utf-8
<html>
Under maintenance.
</html>
ステータスコードを指定できるため、503 とすることでメンテナンスサーバ代わりになるかもしれません。(現時点では日本語未対応ですが……)
シンプルな HTTPS サーバとして ALB を利用する
HTTPS で特定のレスポンスを返すだけであれば、上記2つを組み合わせて ALB 単体で実現できます。別途 Web サーバを用意する必要がありません。
HTTP リスナーにリダイレクト、HTTPS リスナーに固定レスポンスを設定すれば OK です。
$ curl -LI http://example.yuu26.com/
HTTP/1.1 301 Moved Permanently
Server: awselb/2.0
Location: https://example.yuu26.com:443/
HTTP/2 200
server: awselb/2.0
content-type: text/html; charset=utf-8
まとめ
- ALB だけでリダイレクトができるようになりました
- ALB だけで固定レスポンスが返せるようになりました
- レスポンスコードやリダイレクト先は任意に設定可能です
フル HTTPS 化が広がるなか、リダイレクトを使う機会は増えているように感じます。
Web サーバ側の設定を追記することなく ALB 単体で済むのはとても便利ですね。
前回の記事がさっそく不要になってしまいました。変化が早い。。。
ディスカッション
コメント一覧
まだ、コメントがありません
フォローする
カテゴリー
最近の投稿
ブログについて