Computingプロバイダから割り当てられているグローバルIPアドレスをいくつかの用途で外部から使っていて、その1つがこのブログなんですけど、それ以外にも仕事の関係でHTTPS通信を受け入れるように設定してました。Encryptを使ってブログを常時HTTPS化することにしたという話。想定している環境はこんな感じ。Offloadingは行わないので、それぞれのサーバーに証明書がある。これに伴って、ブログの公開URLはhttps://lifewith34.ddo.jpになりました。年内いっぱいくらいでHTTPでのアクセスは遮断する予定です。やること自体は大して難しくないのに、使っているルーター(RTX1200)のNAPTの設定で見落としがあって、どうやっても外からのHTTPSのアクセスがARRの仮想マシンに入ってこなくて週末全部を棒に振るというバカなことをしてしまったところはあるものの、今は無事に動いてます。そもそも、ARR自体今回初めて触ったくらいで、プロキシを有効化したときに規定でサーバー名のノードのURL書き換えに作られるHTTPとHTTPSのルールに翻弄されてしまった。イメージとしては、HTTP_HOSTを見つつ、外部のDNSに登録している2つの全く異なるドメインのどちらに対するアクセス化を判別して適切なVMにリクエストを流すだけで済むんだけど、入ってくるリクエストがHTTPならまだしも、HTTPSだったら、ARRのサーバーに証明書を入れないでどうやってリバースプロキシになるの?っていうところで躓いていたレベル。そもそも、リバースプロキシを構築するシナリオ自体、インターネットに公開しているドメインが1つしかなくて、URLによって降り先となるサーバーが別なパターンが圧倒的多数。会社のドメインがあって、WWWもあれば、LyncやExchangeも外から繋がるようになっているみたいな。1つのグローバルIPアドレスで全く異なるドメインをホストするっていうのは情報が少なくて、英語の情報を検索しようにも期待したものにたどり着けなくて苦労した。最終的にうまく動いているけど、きっとまだそぎ落とせるところがあるはず。当初、ARR用にサーバーを立てるつもりではなくて、MovableTypeをインストールしているサーバーにARRを入れて、全てのHTTPSの通信はこのサーバーを通すつもりだったのに、問題の切り分けのためにARRを別立てにしたことで台数が無駄に増えちゃった。Rewriteをインストールする。Proxyにチェックを入れる。それ以外は何もしない。Rewriteの設定は有効にしないまま。バックエンドとなる2つのドメインを受け持つサーバーにリバースプロキシするため、サイトを2つ作る。バックエンドから、それぞれのドメインの証明書を秘密鍵付きでエクスポートしておき、ARRのサーバーにインポートしておく。ストアは個人用ストアでOK。それぞれのサイトのバインド設定は、各ドメインの証明書を選んでポートは443。ホスト名として、公開DNSに登録してあるホスト名を記入する。今回の環境では、一方のドメインにはAとCNAMEで2つあったので、以下のように2つのバインド設定を行っている。あとは、各サイトでURL書き換えを開いて、リバースプロキシのルールを追加する。設定内容は以下のようになる。これは、各サイトの物理ディレクトリにweb.configとして保存されているもの。要は、正規表現の(.*)で、HTTP_HOSTが条件に一致する場合は、バックエンドのサーバーを指定したURLに書き換えて流すという内容。終わってみればホントにシンプル。MovableTypeをインストールしたサーバーにARRを入れて、NAPTでそっちにリクエストを流すだけでできたはずなんだよな。Encryptなので、バックエンドで自動更新するのは勝手にタスクでできるとしても、ARRにインポートしてある証明書は手動でコピーしないとダメじゃんっていう。そのへんは追々直していくしかないだろうね。帰省このブログを購読Homeこのブログはクリエイティブ・コモンズでライセンスされています。