GCEでHTTPS負荷分散 SSL Termination
技術的に不可能だろうと思っていましたが、予告通りHTTPS負荷分散がGCEでも実現可能となりました。
これにより、SSL TerminationがGCEでも可能となりました!
HTTP負荷分散との変更点
GCEのロードバランサは2つあります
- ネットワーク負荷分散
- HTTP負荷分散
いずれもAWS - ELBに比べて暖気不要などアドバンテージがあるのは変わりませんが、本機能はHTTP負荷分散
のみです。
Developers Consoleから変更可能です。
簡単ですが、一旦HTTP負荷分散として設定したものを、HTTPSへ変更する手順を記す。
HTTPSでリクエストを受ける
SSL証明書をアップロード
アプリケーション側の考慮
AWSのELBと同じく、ロードバランサ側でSSLを剥がしてしまうので、バックエンドのWebサーバ側にとっては ブラウザからHTTPSかHTTPの判断がつきません。が、そもそも1つのIPアドレスで80 & 443を両方Listen出来ない
ので、この考慮は必要ないかもしれません。
HTTPヘッダ
ここから書くことはドキュメンテーションにも記載がない内容
となります。今後変更される可能性は極めて高いと思います!
ダサくて嫌だけど、おなじみphpinfo()でのぞきます。#もっとイケてるカッコイイ方法を探そう
これを見てわかることは
- HTTPSは何かのリソースでSSLを解いている
ということは、暖気不要とはならないはず
- AWS - ELBに比べて、SSLを解く専用のナニかが在る
それが X-FORWARDED-FORに出ている。だからカンマ区切りの2段転送。
まとめ
AWSのELBとはかなり違うので注意!
1. 1つのIPアドレスで 80 & 443を Listen 出来ない
2. X-Forwarded-Forはカンマ区切りになる(これは2段リバプロとかやるとこうなる、標準の動き)
3. この構成だと、暖気無しとは行かないのではないか?
ひとまず出来ましたが、まだ課題が沢山ありますね。。Betaが切れる頃までに仕様が様変わりするかもしれないので、そこまで待つ!