2009-03-18 8 views
2

Voici le scénario: Le serveur A héberge l'application 'principale' (www.example.com) Le serveur B héberge une application de support (b.example.com) Ils sont connectés en interne par un 192. * adresse et sont à la fois disponibles en externe par DNSIIS 6 - Créer un répertoire virtuel qui pointe vers une application IIS sur un serveur différent?

serveur A a plusieurs répertoires virtuels qui sont mis en correspondance par le biais des partages UNC: www.example.com/virtual1 -> \ 192.168.1.1 \ virtual1 (sur serverB)

Je voudrais être en mesure d'exécuter l'application qui se trouve sur le serveur B (servi via IIS) et faire apparaître comme si elle fonctionne sur serverA:

www.example.com/application -> b.example.com/app

Je voudrais quand même être en mesure d'accéder au serveur B directement

b.example.com/app

Des idées?

Edit:


Transforme la demande derrière le proxy a refusé de me laisser changer dynamiquement sa forme « action » (ni ne me laisse rien changer d'autre). J'étais capable d'afficher les données du serveur; . Ne ​​pouvait pas poster :(

Ainsi, les deux réponses m'a orienté dans la bonne direction j'ai utilisé un proxy:

http://code.google.com/p/iisproxy/

J'ai créé un répertoire virtuel sur le serveur A qui correspondent aux répertoires dont je avais besoin sur Serveur B - et cela a fonctionné! :-)

Répondre

2

Cela devrait être possible dans IIS. Je me souviens que je devais le faire une fois.

Il suffit de créer un répertoire virtuel en utilisant le chemin UNC pointant vers \\ServerB\SharedAppDirOnB et (si nécessaire) « connecter en tant que ... » en utilisant les informations d'identification nécessaires pour le serveur B.

Si vous avez des problèmes avec « Se connecter en tant .. "il pourrait s'agir d'un problème d'autorisation de dossier du serveur B. Essayez ceci: ajoutez un nouveau compte utilisateur sur votre serveur principal qui a le même nom et mot de passe que le compte sur le serveur B. Cela semble stupide, mais je m'en souviens mon problème. Vous pouvez par exemple ajouter un nouveau compte d'utilisateur sur les deux serveurs: "IisCommon" avec les mêmes mots de passe sur les deux serveurs. Ensuite, assurez-vous de donner toutes les autorisations d'accès aux fichiers nécessaires au dossier sur le serveur B (et l'autorisation de partage!). Essayez d'abord de vous connecter manuellement à l'aide de l'Explorateur Windows si vous pouvez accéder au partage.

Assurez-vous que marque le nouveau répertoire virtuel en tant qu'application et donne les droits d'exécution appropriés.


Une autre solution serait une sorte de proxy inverse. J'ai utilisé un produit tiers sur IIS 6.0 pour cela: ISAPIrewrite pour IIS. Le mode "proxy" vous permet de "transférer" la requête faite à votre serveur principal (www.example.com/...) à votre autre serveur, mais en envoyant les réponses résultantes comme si elles avaient été traitées par votre application "domaine" principale . La fonctionnalité est appelée "directive proxy". Il accepte les expressions régulières.

+0

ne fonctionne pas :( J'ai fait le "connecter en tant que" avec un compte d'administrateur de domaine (juste pour être sûr), mis en place avec les autorisations d'exécution, et vérifié la version ASP.Net correcte Donne-moi une erreur 404 - apparaît comme si le fichier .dll auquel j'accède est à la recherche de ressources sur le serveur A qui n'existent pas – JayTee

+0

Hm, j'avais ce problème aussi: essayez d'ajouter un nouveau compte d'utilisateur sur votre serveur principal qui a le même nom et mot de passe que le compte sur le serveur B. Cela devrait résoudre le problème. – splattne

1

Étant donné que le serveur virtuel A ne peut pas fonctionner depuis le serveur A via un partage UNC, vous devez utiliser b.example.com/app depuis le serveur b. DNS résout les noms de domaine en adresses IP. Vous demandez que le même nom de domaine soit résolu en deux adresses IP différentes, en fonction d'une URL différente. Ce n'est pas quelque chose que IIS ou Windows peuvent faire.

Vos options sont:

  • écrire un service proxy sur le serveur A qui passe sur les requêtes au serveur B. Si vous voulez complètement transparent (pas seulement une redirection), vous auriez à revenir flux la réponse aussi bien. Ce n'est pas trivial, mais possible.

  • Placez la page serveur B dans un IFRAME sur une nouvelle page sur le serveur A.

  • Utilisez un équilibreur de charge devant les deux serveurs qui peuvent répartir le trafic basé sur l'URL
Questions connexes