3つの異なるポートで3つのセルフホストアプリケーション(IISでホストされていない)を実行するAzureの仮想マシンがあります。
以下のURLからアクセスできます。
my-server.cloudapp.Azure.com:8080
my-server.cloudapp.Azure.com:8081
my-server.cloudapp.Azure.com:8082
ドメイン名(my-server.company.com
)を購入し、それぞれのアプリケーションを指す3つのサブドメインを作成したい
application-1.my-server.company.com
application-2.my-server.company.com
application-3.my-server.company.com
最初に考えたのは、仮想マシンにIISをインストールし、この記事に記載されているデフォルトのWebサイトでURL Rewriteを使用してリバースプロキシをセットアップすることです( http://weblogs.asp.net/owscott/creating-a-reverse-proxy-with-url-rewrite-for-iis )。
したがって、このシナリオでは、サブドメインごとにmy-server.cloudapp.Azure.com
を指すようにCNAMEレコードを設定し、異なるポートに転送するようにリバースプロキシを構成します(8080
、8081
、 8082
)Hostヘッダーに基づきます。
これは可能ですか/これについて最善の方法ですか?
2番目の質問は、これが機能するようになったら、どうすればsslを追加できますか?
各サブドメインに独自のSSL証明書が必要ですか?その場合、上記の設定でこれをどのように機能させることができますか(各証明書をバインドするIIS Webサイトはありません)。または、my-server.company.comの証明書を使用してから、リバースプロキシでオフロードできますか?
次のようにCNAME DNSレコードを作成しました。
CNAME | application-1 | my-server.cloudapp.Azure.com
CNAME | application-2 | my-server.cloudapp.Azure.com
CNAME | application-2 | my-server.cloudapp.Azure.com
次に、Azure vmで Caddy (自動HTTPSを使用したHTTP/2 Webサーバー)を次のCaddyfileで実行します。
application-1.my-server.company.com {
proxy / localhost:8080 {
proxy_header Host {Host}
}
}
application-1.my-server.company.com {
proxy / localhost:8081 {
proxy_header Host {Host}
}
}
application-1.my-server.company.com {
proxy / localhost:8082 {
proxy_header Host {Host}
}
}
これの美しさは、Caddyが初めて実行されるときに、すべてのサイトでHTTPSを自動的に有効にし(Let's Encryptから自動生成された証明書を使用)、すべてのHTTP要求を同等のHTTPSにリダイレクトします。
このセットアップにより、VMにIISをインストールする必要がなくなりました。
注:Caddyが機能するには、ポート80および443にインバウンドファイアウォールルールを追加する必要があります