Konfigurieren Sie IIS 7 Reverse Proxy für die Verbindung mit TeamCity Tomcat

12

Wir haben eine IIS 7 - Webserver konfiguriert und möchten einen erstellen Reverse - Proxy für eine Teamcity Installation mit Tomcat auf der gleichen Maschine.

Die IIS-Server-Site ist https://somesiteund ich möchte, dass TeamCity als https://somesite/teamcityWeiterleitungsserver angezeigt wird http://localhost:portnumber.

Ich habe die IIS URL Rewrite-Erweiterung und das Application Request Routing installiert , um einen Reverse-Proxy einzurichten, kann ihn aber nicht zum Laufen bringen.

Die nächste Antwort, die ich gefunden habe, ist eine alte StackOverflow-Frage: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https,
die leider nicht funktioniert Beispiel.

Ich habe eine ganze Menge gesucht, kann aber anscheinend kein relevantes Beispiel finden.

Jede Hilfe wird geschätzt!

Cynicszm
quelle
Ich habe auch festgestellt, dass bei Verwendung dieser Methode einige Schaltflächen in TeamCity zu "http" anstelle von "https" führen. Vielleicht gibt es keine gute Möglichkeit, dies zu tun. Bedeutet das, dass der erste Aufruf mit allen Daten im Klartext gesendet wird, obwohl er neu geschrieben werden kann? hmmm
tofutim

Antworten:

12

Nachdem ich ungefähr 4 Stunden lang versucht hatte, SSL für TeamCity zu konfigurieren (und die Antworten in diesem Thread verwendete), gelang es mir, dies mithilfe der Serverfarm-Option zum Laufen zu bringen.

  • Ich habe eine TeamCity-Serverfarm mit meinem TeamCity-Server auf 127.0.0.1 über Port 8080 konfiguriert und den Anwendungsroutingregeln ermöglicht, eine entsprechende Serverfarmroutingregel zu erstellen.

  • Anschließend habe ich eine Website mit dem Namen TeamCitySecureProxy erstellt, die ich mit einem selbstsignierten Zertifikat konfiguriert habe. Auf den Bindungen habe ich nur https / 443 konfiguriert (kein http / 80).

  • Der Teil, den ich vermisst habe: - Ich habe dann in IIS unter "Serverfarmen" auf den Knoten "TeamCity" geklickt, im Bereich "Serverfarm" die Option "Proxy" ausgewählt und das Kontrollkästchen "Host in Antwortheader umschreiben" aktiviert.

Ich habe jetzt einen sicheren Endpunkt für den Zugriff auf meine einfache http TeamCity-Installation.

Warren Edwards
quelle
1
Ich erhalte die Meldung "502 - Der Webserver hat eine ungültige Antwort erhalten, als er als Gateway- oder Proxyserver fungierte." - Ist Ihnen dies auf Ihrer Reise begegnet, und wenn ja, wie haben Sie es behoben?
Mcintyre321
Diese Lösung hat bei mir funktioniert. Reverse-Rewrite-Host ist erforderlich, da ansonsten einige Schaltflächen zu http anstelle von https führen. Thanks Warren
bis zum
Es gibt einige Probleme mit dem Nuget-Server in diesem Szenario. :(
Tofutim
1

Sie können dazu auch einen Konnektor verwenden.

Es gibt den alten ISAPI-Connector (Redirector), der direkt von Apache erhältlich ist, oder einen neuen, der von RiaForge erhältlich ist (dieser scheint einfacher in Betrieb zu sein).

http://tomcatiis.riaforge.org/

Henry Fastow
quelle
1
was ist mit *.jarDateien? Ich habe dies auf meinem IIS 7.5 installiert, aber es dient nur dem *.jspInhalt ... :( Ich habe eine vaadin-6.6.2.jarDatei im Stammverzeichnis meiner bereitgestellten Webanwendung. Ich denke, BonCode AJP Connector verarbeitet nur JSPs. Ich sehe eine Boncode-Tomcat-JSP-HandlerOption in "Handler-Zuordnungen" von IIS, aber es ist nicht festgelegt, was mit *.jarDateien geschehen soll
Sk8erPeter
1

Stellen Sie sicher, dass ARR-Proxy in der IIS-GUI aktiviert ist. Sie möchten wahrscheinlich den Hostheader beibehalten (möglicherweise müssen Sie die Datei applicationHost.config manuell bearbeiten oder mithilfe von appcmd diesen ändern) und den Host in den aktivierten Optionen für den Antwortheader umkehren, damit der Browser Anforderungen stellt und Antworten anzeigt, die mit denen übereinstimmen SSL-zertifizierter Host.

  1. IIS-Site auf 443 (und wahrscheinlich auf 80?) - alle Anforderungen abhören (Hostnamen nicht angeben)
  2. Alle eingehenden Pfade anzeigen: URL abgleichen (.*)
  3. Suchen Sie nach dem TeamCity-Pfad, und behalten Sie den verbleibenden Pfad bei: Bedingung {URL} stimmt überein^teamcity(/.*)?
  4. neu schreiben mit erhaltenem Pfad: action rewrite, http://localhost:port/{C:1}
  5. Querystring anhängen aktiviert
  6. und beenden Sie die Verarbeitung weiterer Regeln wahrscheinlich überprüft

Ich denke das sollte es tun.

<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
quelle
0

Ich habe das gerade selbst gemacht und gerade einen Blog darüber gepostet.

Sie haben anscheinend alle Voraussetzungen installiert. Jetzt müssen Sie nur noch den Server einrichten:

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

Bronumski
quelle
Keine Freude mit deinem Beitrag. Ich hatte bereits die ServerFarm-Option ausprobiert. Ich muss dafür sorgen, dass es nur mit SSL funktioniert, IIS ist nicht an 80 und 443 gebunden. Außerdem muss die Website so funktionieren, wie es in der Frage root / teamcity beschrieben ist, und der Beitrag muss nicht detailliert genug sein, damit es so funktioniert. Vielen Dank für den Link
Cynicszm