web-dev-qa-db-fra.com

IIS proxy inverse de sous-domaine basé sur le nom d'hôte

J'ai une machine virtuelle dans Azure qui exécute trois applications auto-hébergées (non hébergées dans IIS) sur trois ports différents.

Je peux y accéder aux adresses ci-dessous:

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

J'ai acheté un nom de domaine (my-server.company.com) et je souhaite créer trois sous-domaines pointant vers chacune des applications.

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

Ma première pensée est d’installer IIS sur la machine virtuelle et de configurer un proxy inverse à l’aide de l’URL Rewrite sur le site Web par défaut, comme indiqué dans cet article ( http://weblogs.asp.net/owscott/creation-a-reverse-proxy-with-url-rewrite-for-iis ).

Donc, dans ce scénario, je configurerais les enregistrements CNAME pour chacun des sous-domaines afin qu'ils pointent vers my-server.cloudapp.Azure.com, puis configurais le proxy inverse pour le transférer aux différents ports (8080, 8081, 8082) basé sur l'en-tête de l'hôte.

Est-ce possible/la meilleure façon de s'y prendre?

La deuxième question est une fois que cela fonctionne, comment puis-je ajouter SSL?

Chaque sous-domaine aurait-il besoin de son propre certificat SSL, auquel cas cela peut-il fonctionner avec la configuration ci-dessus (il n’existe aucun site Web IIS auquel lier chaque certificat)? Ou pourrais-je simplement utiliser un certificat pour mon-serveur.entreprise.com et ensuite décharger sur le proxy inverse?

5
kimsagro

Solution

J'ai créé les enregistrements DNS CNAME comme suit:

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

Ensuite, sur la machine virtuelle Azure, je lance Caddy (un serveur Web HTTP/2 avec HTTPS automatique) avec le fichier Caddy suivant:

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

La beauté de cela, c’est la première fois que Caddy fonctionne, il active automatiquement le protocole HTTPS pour tous vos sites (à l’aide des certs générés automatiquement de Let's Encrypt) et redirige également toutes les demandes HTTP vers leur équivalent HTTPS.

Cette installation signifiait également que je n'avais pas à installer IIS sur la machine virtuelle.

REMARQUE: vous devez ajouter une règle de pare-feu entrant pour les ports 80 et 443 pour que Caddy puisse fonctionner.

0
kimsagro