Skonfiguruj odwrotny serwer proxy IIS 7, aby połączyć się z TeamCity Tomcat

12

Mamy skonfigurowanego serwera internetowego IIS 7 i chcielibyśmy utworzyć odwrotne proxy dla instalacji TeamCity przy użyciu Tomcat na tym samym komputerze.

Witryna serwera IIS jest https://somesitei chciałbym, aby TeamCity pojawiało się jako https://somesite/teamcityprzekierowanie do http://localhost:portnumber.

Zainstalowałem rozszerzenie IIS URL Rewrite i routing żądań aplikacji, aby spróbować skonfigurować odwrotne proxy, ale nie mogę go uruchomić.

Najbliższą odpowiedzią, jaką znalazłem, jest stare pytanie StackOverflow: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https,
które niestety nie działa przykład.

Sporo szukałem, ale nie mogę znaleźć odpowiedniego przykładu.

Każda pomoc jest mile widziana!

Cynicszm
źródło
Zauważyłem również, że przy użyciu tej metody niektóre przyciski w TeamCity prowadzą do „http” zamiast „https” ... może nie ma dobrego sposobu na zrobienie tego. Chociaż może zostać przepisane, czy to oznacza, że ​​pierwsze połączenie ze wszystkimi danymi zostanie wysłane w postaci zwykłego tekstu? hmmm
tofutim

Odpowiedzi:

12

Spędziłem około 4 godzin próbując skonfigurować SSL dla TeamCity (i korzystając z odpowiedzi w tym wątku), udało mi się to uruchomić przy użyciu opcji farmy serwerów.

  • Skonfigurowałem farmę serwerów TeamCity, która zawierała mój serwer TeamCity na 127.0.0.1 przy użyciu portu 8080, i zezwoliłem regułom routingu aplikacji na utworzenie odpowiedniej reguły routingu farmy serwerów.

  • Następnie utworzyłem witrynę o nazwie TeamCitySecureProxy, którą skonfigurowałem przy użyciu certyfikatu z podpisem własnym. W przypadku powiązań skonfigurowałem tylko https / 443 (bez http / 80).

  • Część, której mi brakowało: - Następnie kliknąłem węzeł „TeamCity” w obszarze „Farmy serwerów” w IIS, wybrałem „Serwer proxy” z panelu „Farma serwerów” i zaznaczyłem „Odwróć przepisywanie hosta w nagłówkach odpowiedzi”.

Teraz mam bezpieczny punkt końcowy, aby uzyskać dostęp do mojej zwykłej instalacji http TeamCity.

Warren Edwards
źródło
1
Otrzymuję komunikat „502 - serwer sieci Web otrzymał niepoprawną odpowiedź podczas działania jako brama lub serwer proxy”. - czy napotkałeś to podczas podróży, a jeśli tak, jak to naprawiłeś?
mcintyre321
To rozwiązanie działało dla mnie. Host odwrotnego przepisywania jest konieczny, w przeciwnym razie niektóre przyciski prowadzą do http zamiast do https. Dzięki Warren
tofutim
W tym scenariuszu występują pewne problemy z serwerem
nuget
1

W tym celu można również użyć złącza.

Istnieje stare złącze ISAPI (redirector) dostępne bezpośrednio z Apache lub jest też nowe dostępne z RiaForge (ten wydaje się łatwiejszy do uruchomienia).

http://tomcatiis.riaforge.org/

Henry Fastow
źródło
1
co z *.jarplikami? Zainstalowałem to na swoim IIS 7.5, ale służy tylko *.jspzawartości ... :( Mam vaadin-6.6.2.jarplik w katalogu głównym mojej wdrożonej aplikacji internetowej. Myślę, że BonCode AJP Connector obsługuje tylko pliki JSP, widzę Boncode-Tomcat-JSP-Handleropcję „Mapowania modułu obsługi ” IIS, ale nie ustawiono, co należy zrobić z *.jarplikami
Sk8erPeter,
1

Upewnij się, że proxy ARR jest włączone w GUI IIS. Prawdopodobnie chcesz zachować nagłówek hosta (może być konieczne ręczne zmodyfikowanie applicationHost.config lub użyj appcmd, aby ustawić ten) i odwrócić przepisywanie hosta w włączonych opcjach nagłówka odpowiedzi, więc przeglądarka wysyła żądania i widzi odpowiedzi, które pasują do Host certyfikatu SSL.

  1. Witryna IIS na 443 (i prawdopodobnie 80?) - nasłuchuje wszystkich żądań (nie podawaj nazwy hosta)
  2. spójrz na wszystkie ścieżki przychodzące: dopasuj adres URL (.*)
  3. poszukaj ścieżki TeamCity, zachowaj resztę ścieżki: warunek {URL} pasuje^teamcity(/.*)?
  4. przepisz z zachowaną ścieżką: przepisz działanie, http://localhost:port/{C:1}
  5. dodaj sprawdzone kwerendy
  6. i przestań przetwarzać dalsze reguły prawdopodobnie sprawdzone

Myślę, że to powinno wystarczyć.

<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
źródło
0

Właśnie to zrobiłem i właśnie opublikowałem blog na ten temat.

Wygląda na to, że masz zainstalowane wszystkie wymagania, teraz wystarczy skonfigurować serwer:

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

Bronumski
źródło
Nie ma radości z używania twojego postu. Próbowałem już opcji ServerFarm. Muszę sprawić, by działała tylko na SSL, IIS nie jest związany tylko z 80, tylko 443. Muszę też sprawić, aby strona działała zgodnie z opisem w pytaniu root / teamcity, a post nie ma wystarczających szczegółów, aby działała w ten sposób. Dzięki za link
Cynicszm