2

I am currently trying to set up various Jetbrains services for use via https by using an IIS reverse proxy. The complete intended setup should looks somewhat like this:

TeamCity: https://server.company.com           -> http://server.company.com
YouTrack: https://server.company.com/youtrack/ -> http://server.company.com:1234/issues/
Hub:      https://server.company.com/hub/      -> http://server.company.com:5678/hub/
UpSource: https://server.company.com/upsource/ -> http://server.company.com:9876

I have already gotten this to work, with some difficulty, for TeamCity and YouTrack by using the following configuration:

In IIS, I have a TeamCity website that serves as a redirect. The web.config of that site currently looks as follows:

<?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}" />
                </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 Collaboration General" stopProcessing="true">
                    <match url="(.*)" />
                    <action type="Rewrite" url="http://server.company.com/{R:1}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

In addition, I have configured the following server variables as described in the documentation:

HTTP_X_FORWARDED_HOST
HTTP_X_FORWARDED_SCHEME
HTTP_X_FORWARDED_PROTO

However, when trying to access UpSource via https://server.company.com/upsource/, all I get is an empty page titled "Upsource". No error message. Not even a Fav Icon. Accessing UpSource via http://server.company.com:8081/ still works as normal though.

I have also already tried running the following chain of commands:

upsource.bat stop
upsource.bat configure --listen-port 8081 --base-url https://server.company.com:443/upsource/
upsource.bat start --J-Dbundle.websocket.compression.enabled=false

However, that did just caused the problem to change to:

HTTP ERROR: 404
Problem accessing /bundle/starting. Reason:

Not Found
Powered by Jetty:// 9.3.20.v20170531

How can I set up UpSource to work like TeamCity and Hub are already doing?

Any help on this would be greatly appreciated.

Kira Resari
  • 1,718
  • 4
  • 19
  • 50

2 Answers2

0

With some help of a YouTrack support employee helping with a related YouTrack error, I was able to figure out the reason behind this issue.

The reason is this: When accessing UpSource via https using a path for the redirect, the path needs to be the same in both the http and https variants.

In short, this will not work:

https://server.company.com/upsource -> http://server.company.com:9876

But this will:

https://server.company.com/upsource -> http://server.company.com:9876/upsource

I got this to work by running the following configurational command on the upsource.bat in [InstDir]/bin:

upsource.bat configure --listen-port 9876 --base-url http://server.company.com:9876/upsource

Now I can at the very least connect to and log in to UpSource via https. There's still a problem, but since it's unrelated to the topic of this question, I will create a separate question for it.

Kira Resari
  • 1,718
  • 4
  • 19
  • 50
  • For details and a solution on the error that happened after this one, refer to the following topic: https://stackoverflow.com/questions/49644222/setting-up-upsource-behind-iis-reverse-proxy-for-https-typeerror-failed-to-fe – Kira Resari Apr 09 '18 at 06:45
0

Note: on IIS 8.5 set HTTP1.1 at ARR PROXY-Settings. Otherwise the websocket connects, but there's no communication.

upsource v. upsource-2018.2.1291

https://www.jetbrains.com/help/upsource/proxy-configuration.html#IISreverseProxy