Configurer le proxy inverse IIS 7 pour se connecter à TeamCity Tomcat

12

Nous avons un serveur Web IIS 7 configuré et souhaitons créer un proxy inverse pour une installation TeamCity utilisant Tomcat sur la même machine.

Le site du serveur IIS est https://somesiteet j'aimerais que TeamCity apparaisse comme https://somesite/teamcityredirigeant vers http://localhost:portnumber.

J'ai installé l' extension IIS URL Rewrite et le routage de demande d'application pour essayer de configurer un proxy inverse, mais je ne peux pas le faire fonctionner.

La réponse la plus proche que j'ai trouvée est une ancienne question StackOverflow: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https
qui n'a malheureusement pas de travail exemple.

J'ai beaucoup cherché, mais je n'arrive pas à trouver un exemple pertinent.

Toute aide est appréciée!

Cynicszm
la source
J'ai également remarqué qu'en utilisant cette méthode, certains boutons dans TeamCity conduisaient à «http» au lieu de «https» ... peut-être qu'il n'y a pas une bonne façon de le faire. Bien qu'il puisse être réécrit, cela signifie-t-il que le premier appel avec toutes les données est envoyé en texte brut? hmmm
tofutim

Réponses:

12

Après avoir passé environ 4 heures à essayer de configurer SSL pour TeamCity (et à l'aide des réponses de ce fil), j'ai réussi à faire fonctionner cela en utilisant l'option de batterie de serveurs.

  • J'ai configuré une batterie de serveurs TeamCity qui comprenait mon serveur TeamCity sur 127.0.0.1 à l'aide du port 8080, et j'ai autorisé les règles de routage d'application à créer une règle de routage de batterie de serveurs correspondante.

  • J'ai ensuite créé un site Web appelé TeamCitySecureProxy que j'ai configuré avec un certificat auto-signé. Sur les liaisons, je n'ai configuré que https / 443 (pas http / 80).

  • La partie qui me manquait: - J'ai ensuite cliqué sur le nœud 'TeamCity' sous 'Server Farms' dans IIS, choisissez 'Proxy' dans le volet 'Server Farm', et j'ai coché 'Reverse rewrite host in response headers'.

J'ai maintenant un point de terminaison sécurisé pour accéder à mon installation simple de TeamCity http.

Warren Edwards
la source
1
J'obtiens «502 - Le serveur Web a reçu une réponse non valide en tant que passerelle ou serveur proxy». - l'avez-vous rencontré lors de votre voyage, et si oui, comment l'avez-vous résolu?
mcintyre321
Cette solution a fonctionné pour moi. L'hôte de réécriture inverse est nécessaire, sinon certains boutons mènent à http au lieu de https. Merci Warren
tofutim
Il y a des problèmes avec le serveur nuget dans ce scénario. :(
tofutim
1

Vous pouvez également utiliser un connecteur pour ce faire.

Il y a l'ancien connecteur ISAPI (redirecteur) disponible directement auprès d'Apache ou il y a aussi un nouveau disponible auprès de RiaForge (celui-ci semble plus facile à exécuter).

http://tomcatiis.riaforge.org/

Henry Fastow
la source
1
qu'en est-il des *.jarfichiers? J'ai installé cela sur mon IIS 7.5, mais il ne sert que le *.jspcontenu ... :( J'ai un vaadin-6.6.2.jarfichier à la racine de ma webapp déployée. Je pense que le connecteur BonCode AJP ne gère que les JSP, je peux voir une Boncode-Tomcat-JSP-Handleroption dans "Mappages de gestionnaires" de IIS, mais il ne définit pas ce qui doit être fait avec les *.jarfichiers
Sk8erPeter
1

Assurez-vous que le proxy ARR est activé dans l'interface graphique IIS. Vous souhaitez probablement conserver l'en-tête de l'hôte (vous devrez peut-être modifier applicationHost.config à la main, ou utiliser appcmd pour définir celui-ci) et inverser la réécriture de l'hôte dans les options d'en-tête de réponse activées également, afin que le navigateur fasse des demandes et voit les réponses qui correspondent à la Hôte de certificat SSL.

  1. Site IIS sur 443 (et 80 probablement?) - écoute de toutes les requêtes (ne spécifiez pas le nom d'hôte)
  2. regarder tous les chemins entrants: correspondre à l'URL (.*)
  3. recherchez le chemin TeamCity, conservez le reste du chemin: les conditions {URL} correspondent^teamcity(/.*)?
  4. réécrire avec un chemin préservé: réécriture de l'action, http://localhost:port/{C:1}
  5. ajouter la chaîne de requête vérifiée
  6. et arrêter le traitement d'autres règles probablement vérifiées

Je pense que cela devrait le faire.

<rule name="Demo Rule" stopProcessing="true">
    <match url="(.*)" />
    <conditions>
        <add input="{URL}" pattern="^teamcity(/.*)?" />
    </conditions>
    <action type="Rewrite" url="http://localhost:8080/{C:1}" />
</rule>
andrewbadera
la source
0

Je viens de le faire moi-même et je viens de publier un blog à ce sujet.

Vous semblez avoir installé toutes les exigences, maintenant il vous suffit de configurer le serveur:

http://bronumski.blogspot.com/2010/10/host-teamcity-in-iis7.html

Bronumski
la source
Pas de joie à utiliser votre message. J'avais déjà essayé l'option ServerFarm. Je dois le faire fonctionner uniquement sur SSL, IIS n'est pas lié à 80 seulement 443. J'ai également besoin de faire fonctionner le site comme décrit dans la question root / teamcity et il n'y a pas suffisamment de détails sur le message pour le faire fonctionner de cette façon. Merci pour le lien
Cynicszm