Настройка YouTrack через https через обратный прокси IIS

Я пытаюсь настроить YouTrack вместе с сервисами JetBrains TeamCity, Hub и UpSource для работы через https с помощью обратного прокси-сервера IIS.

Я действовал так, как подробно описано в документации, но у меня не было никакого успеха, несмотря на то, что я пробовал различные варианты, я не смог найти удачный вариант.

В настоящее время YouTrack установлен на сервере под URL-адресом: http://server.company.com:8080/issues

Я пытаюсь заставить его работать по следующему URL: https://server.company.com/youtrack/

Мне уже удалось настроить практически идентичный URL Rewrite для OctopusDeploy на том же сервере (https://server.company.com/octopus/ -> http://server.company.com:8888/octopus), поэтому я знаю, что это по крайней мере теоретически возможно. В общем, я знаю, что проблема должна быть связана с YouTrack, в отличие от IIS. Кроме того, он работает для TeamCity и вроде работает для Hub (некоторые проблемы с безопасностью из-за того, что Hub использует http для некоторых вещей).

Во всяком случае, мой web.config в настоящее время выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <clear />
                <rule name="Reverse Proxy to TeamCity" stopProcessing="true">
                    <match url="^teamcity/(.*)" />
                    <action type="Rewrite" url="http://server.company.com/{R:1}" />
                </rule>
                <rule name="Reverse Proxy to YouTrack" stopProcessing="true">
                    <match url="^youtrack/(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8080/issues/{R:1}" />
                    <serverVariables>
                        <set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" />
                        <set name="HTTP_X_FORWARDED_SCHEMA" value="https" />
                        <set name="HTTP_X_FORWARDED_PROTO" value="https" />
                    </serverVariables>
                </rule>
                <!--rule name="Reverse Proxy to Oauth" stopProcessing="true">
                    <match url="^oauth(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8080/oauth{R:1}" />
                </rule-->
                <rule name="Reverse Proxy to Hub" stopProcessing="true">
                    <match url="^hub/(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8082/hub/{R:1}" />
                </rule>
                <rule name="Reverse Proxy to UpSource" stopProcessing="true">
                    <match url="^upsource/(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8081/{R:1}" />
                </rule>
                <rule name="Reverse Proxy to Octopus" stopProcessing="true">
                    <match url="^octopus/(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8888/octopus/{R:1}" />
                </rule>
                <rule name="Reverse Proxy to Collaboration General" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://server.company.com/{R:1}" />
                </rule>
            </rules>
        </rewrite>
        <security>
            <requestFiltering>
                <requestLimits maxUrl="6144" maxQueryString="4096" />
            </requestFiltering>
        </security>
    </system.webServer>
</configuration>

В настоящее время это приводит к перенаправлению на страницу TeamCity 404, которое происходит, когда YouTrack каким-то образом удается перенаправить на https://server.company.com/oauth/?state=%2Fissues%2F это заменяет перезапись URL-адреса, тем самым вызывая действие по умолчанию "Обратный прокси-сервер к общему сотрудничеству" (я должен был добавить это, чтобы заставить TeamCity работать), потому что URL больше не соответствует шаблону для правила YouTrack.

Я добавил следующее правило, чтобы противостоять этому:

            <rule name="Reverse Proxy to Oauth" stopProcessing="true">
                <match url="^oauth(.*)" />
                <action type="Rewrite" url="http://server.company.com:8080/oauth{R:1}" />
            </rule>

Однако, когда это правило активно, я вместо этого перенаправлен на пустую страницу в https://server.company.com/oauth?state=%2Fissues%2F,

Я также попробовал следующий вариант с завершающим "/" после "oauth":

            <rule name="Reverse Proxy to Oauth" stopProcessing="true">
                <match url="^oauth/(.*)" />
                <action type="Rewrite" url="http://server.company.com:8080/oauth/{R:1}" />
            </rule>

Однако это приводит только к появлению следующей текстовой страницы:

Diese Seite wurde nicht gefunden
Sie sind nicht angemeldet.
Zurück Anmelden Tickets

Все эти результаты относятся к конфигурациям, основанным на следующей команде:

youtrack.bat configure --listen-port 8080 --base-url https://server.company.com:443 

Я также попробовал следующий вариант этой команды:

youtrack.bat configure --listen-port 8080 --base-url https://server.company.com/youtrack/

Однако это вызывает только следующую ошибку:

HTTP ERROR: 404
Problem accessing /issues/. Reason:
Not Found
Powered by Jetty:// 9.3.20.v20170531

Кроме того, изменение файла web.config не должно указывать на проблемы, такие как:

                <action type="Rewrite" url="http://server.company.com:8080/{R:1}" />

... только вызывает соответствующее сообщение об ошибке:

HTTP ERROR: 404
Problem accessing /. Reason:
Not Found
Powered by Jetty:// 9.3.20.v20170531

На данный момент, я в значительной степени в своем уме. Я перепробовал все, что мог придумать, и до сих пор не приблизился ни на шаг ближе к решению. Я точно знаю, что можно запустить YouTrack под https, потому что сам трекер проблем JetBrains делает это ( https://youtrack.jetbrains.com/), но я не могу понять, как заставить его работать на нас,

У кого-нибудь есть идеи, как мне это решить? Любые указатели или предложения будут с благодарностью на этом этапе.


ОБНОВЛЕНИЕ 4-Апр-2018

Я добился определенного прогресса в этом, но он все еще не совсем работает.

Сотрудник службы поддержки клиентов из YouTrack указал мне, что базовый URL и URL перенаправления должны заканчиваться на одном и том же пути, поэтому я использовал эту команду на youtrack.bat...

youtrack.bat configure --listen-port 8080 --base-url http://server.company.com:8080/youtrack

... и настройте раздел web.config следующим образом:

                <rule name="Reverse Proxy to YouTrack" stopProcessing="true">
                    <match url="^youtrack(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8080/youtrack{R:1}" />
                    <serverVariables>
                        <set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" />
                        <set name="HTTP_X_FORWARDED_SCHEMA" value="https" />
                        <set name="HTTP_X_FORWARDED_PROTO" value="https" />
                    </serverVariables>

Теперь я дошел до логина.

С этого момента проблема, по-видимому, связана с Hub, поскольку при входе в систему я перенаправляю меня на http-версию hub, а затем ловлю в бесконечном цикле, где каждая попытка входа просто перенаправляет на страницу входа.

2 ответа

Измените базовые URL-адреса с http на https для YouTrack ( https://www.jetbrains.com/help/youtrack/standalone/Reverse-Proxy-Configuration.html) и концентратора ( https://www.jetbrains.com/help/hub/Proxy-Configuration.html) и перезапустите обе службы. Пожалуйста, также следует решить проблему с перенаправлением. Если это не так, попробуйте очистить кеш браузера и проверьте снова. Пожалуйста, дайте мне знать, если это поможет.

Хорошо, я понял, как это сделать. Ответ Аны был почти верным, но в нем не было одного последнего важного шага: перенастройка параметра hub-url для YouTrack, чтобы он соответствовал новому URL-адресу Hub.

ПРИМЕЧАНИЕ. Все команды начинаются с hub.bat должны быть выполнены на hub.bat файл в [Hub Installation Directory]\bin и все команды, начинающиеся с youtrack.bat должны быть выполнены на youtrack.bat файл в [YouTrack Installation Directory]\bin,

youtrack.bat stop
hub.bat stop

hub.bat configure --listen-port 8082 --base-url https://server.company.com/hub
youtrack.bat configure --listen-port 8080 --base-url=https://server.company.com/youtrack --hub-url=https://server.company.com/hub/hub

hub.bat start
youtrack.bat start

ПРИМЕЧАНИЕ: я не знаю почему, но Hub добавляет дополнительный / hub после своего базового адреса, поэтому настройка URL-адреса hub для YouTrack заканчивается на /hub/hub,

После этого все, что мне нужно было сделать, это добавить URL-адрес перенаправления в список разрешенных URL-адресов перенаправления для YouTrack в Hub > Settings > Services > YouTrack, и теперь он работает отлично.

Другие вопросы по тегам