it-swarm.com.de

IIS Reverseproxy der Subdomäne basierend auf dem Hostnamen

Ich habe eine virtuelle Maschine in Azure, auf der drei selbst gehostete Anwendungen (nicht in IIS gehostet) an drei verschiedenen Ports ausgeführt werden.

Ich kann unter den folgenden URLs darauf zugreifen:

  • my-server.cloudapp.Azure.com:8080
  • my-server.cloudapp.Azure.com:8081
  • my-server.cloudapp.Azure.com:8082

Ich habe einen Domainnamen (my-server.company.com) gekauft und möchte drei Subdomains erstellen, die auf die jeweiligen Anwendungen verweisen

  • application-1.my-server.company.com
  • application-2.my-server.company.com
  • application-3.my-server.company.com

Mein erster Gedanke ist, IIS auf der virtuellen Maschine zu installieren und einen Reverse-Proxy mit URL Rewrite auf der Standard-Website einzurichten, wie in diesem Artikel erwähnt ( http://weblogs.asp.net/owscott/Erstellen-eines-Reverse-Proxy-mit-URL-Rewrite-für-iis ).

In diesem Szenario würde ich CNAME-Datensätze für jede der Unterdomänen so einrichten, dass sie auf my-server.cloudapp.Azure.com verweisen, und dann den Reverse-Proxy so konfigurieren, dass er an die verschiedenen Ports weiterleitet (8080, 8081, 8082) basierend auf dem Host-Header.

Ist das möglich/der beste Weg, dies zu tun?

Die zweite Frage ist, wie kann ich ssl hinzufügen, wenn ich das zum Laufen gebracht habe?

Würde jede Subdomain ein eigenes SSL-Zertifikat benötigen, in welchem ​​Fall kann dies mit dem obigen Setup funktionieren (es gibt keine iis-Websites, an die jedes Zertifikat gebunden werden kann). Oder könnte ich einfach ein Zertifikat für my-server.company.com verwenden und dann am Reverse-Proxy auslagern?

5
kimsagro

Lösung

Ich habe CNAME DNS-Datensätze wie folgt erstellt:

CNAME | application-1 | my-server.cloudapp.Azure.com
CNAME | application-2 | my-server.cloudapp.Azure.com
CNAME | application-2 | my-server.cloudapp.Azure.com

Dann starte ich auf dem Azure-VM Caddy (ein HTTP/2-Webserver mit automatischem HTTPS) mit der folgenden Caddy-Datei:

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}
    }
}

Das Schöne daran ist, dass Caddy zum ersten Mal ausgeführt wird. Es aktiviert automatisch HTTPS für alle Ihre Websites (mithilfe von automatisch generierten Zertifikaten von Let's Encrypt) und leitet alle HTTP-Anforderungen an das entsprechende HTTPS-Äquivalent weiter.

Dieses Setup bedeutete auch, dass ich IIS nicht auf der VM installieren musste.

HINWEIS: Sie müssen eine eingehende Firewall-Regel für die Ports 80 und 443 hinzufügen, damit Caddy funktioniert

0
kimsagro