Настройте обратный прокси-сервер IIS 7 для подключения к TeamCity Tomcat

12

Мы настроили веб-сервер IIS 7 и хотели бы создать обратный прокси-сервер для установки TeamCity с использованием Tomcat на том же компьютере.

Сайт сервера IIS есть, https://somesiteи я хотел бы, чтобы TeamCity отображался как https://somesite/teamcityперенаправляющий на http://localhost:portnumber.

Я установил расширение IIS URL Rewrite и маршрутизацию запросов приложений, чтобы попытаться настроить обратный прокси-сервер, но не могу заставить его работать.

Самый близкий ответ, который я нашел, это старый вопрос StackOverflow: /programming/331755/how-do-i-setup-teamcity-for-public-access-over-https,
который, к сожалению, не работает пример.

Я немного искал, но не могу найти подходящий пример.

Любая помощь приветствуется!

Cynicszm
источник
Я также заметил, что при использовании этого метода некоторые кнопки в TeamCity приводят к «http» вместо «https» ... возможно, нет хорошего способа сделать это. Хотя он может быть переписан, означает ли это, что первый вызов со всеми данными отправляется в виде простого текста? Ммм
tofutim

Ответы:

12

Потратив всего около 4 часов на настройку SSL для TeamCity (и используя ответы в этой теме), мне удалось добиться этого с помощью опции фермы серверов.

  • Я настроил ферму серверов TeamCity, которая включала мой сервер TeamCity на 127.0.0.1 с использованием порта 8080, и позволил Правилам маршрутизации приложений создать соответствующее правило маршрутизации на ферме серверов.

  • Затем я создал веб-сайт под названием TeamCitySecureProxy, для которого я настроил самозаверяющий сертификат. На привязках я настроил только https / 443 (без http / 80).

  • Часть, которую я пропустил: - Затем я щелкнул узел «TeamCity» в разделе «Фермы серверов» в IIS, выбрал «Прокси» на панели «Ферма серверов» и поставил галочку «Хост обратного перезаписи в заголовках ответов».

Теперь у меня есть безопасная конечная точка для доступа к моей простой установке http TeamCity.

Уоррен Эдвардс
источник
1
Я получаю «502 - Веб-сервер получил неверный ответ, выступая в качестве шлюза или прокси-сервера». - Вы сталкивались с этим в своем путешествии, и если да, то как вы это исправили?
mcintyre321
Это решение сработало для меня. Обратная перезапись хоста необходима, в противном случае некоторые кнопки ведут к http вместо https. Спасибо Уоррен
тофутим
В этом сценарии есть некоторые проблемы с сервером
nuget
1

Вы также можете использовать разъем для этого.

Существует старый коннектор ISAPI (перенаправитель), доступный напрямую от Apache, или новый RiaForge (этот, кажется, легче запустить).

http://tomcatiis.riaforge.org/

Генри Фастов
источник
1
что насчет *.jarфайлов? Я установил это на свой IIS 7.5, но он просто обслуживает *.jspсодержимое ... :( У меня есть vaadin-6.6.2.jarфайл в корне моего развернутого веб-приложения. Я думаю, что BonCode AJP Connector обрабатывает только JSP, я могу видеть Boncode-Tomcat-JSP-Handlerв параметре "Отображения обработчика" IIS, но не установлено, что делать с *.jarфайлами
Sk8erPeter
1

Убедитесь, что прокси ARR включено в графическом интерфейсе IIS. Возможно, вы захотите сохранить заголовок хоста (может потребоваться вручную отредактировать applicationHost.config или использовать appcmd, чтобы установить этот) и перезаписать хост в включенных опциях заголовка ответа, чтобы браузер делал запросы и видел ответы, соответствующие SSL-сертификат хоста.

  1. Сайт IIS на 443 (а 80 наверное?) - прослушивает все запросы (не указывайте имя хоста)
  2. посмотреть все входящие пути: сопоставить URL (.*)
  3. искать пути TeamCity, сохранить оставшуюся часть пути: состояние {URL} матчи^teamcity(/.*)?
  4. переписать с сохраненным путем: переписать действие, http://localhost:port/{C:1}
  5. добавлена ​​проверенная строка запроса
  6. и прекратить обработку дальнейших правил, вероятно, проверено

Я думаю, что должен сделать это.

<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
источник
0

Я только что сделал это сам и только что опубликовал блог об этом.

Вы, кажется, установили все требования, теперь вам просто нужно настроить сервер:

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

Bronumski
источник
Нет радости, используя ваш пост. Я уже попробовал вариант ServerFarm. Мне нужно, чтобы он работал только по SSL, IIS не привязан только к 80. 443. Также нужно, чтобы сайт работал, как описано в вопросе root / teamcity, и недостаточно информации о публикации, чтобы она работала таким образом. Спасибо за ссылку, хотя
Cynicszm