尝试通过IIS反向代理通过https访问UpSource返回空页

时间:2018-03-30 07:47:47

标签: ssl iis https reverse-proxy upsource

我目前正尝试使用IIS反向代理设置各种Jetbrains服务,以便通过https使用。完整的预期设置应该看起来像这样:

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

我已经通过使用以下配置为TeamCity和YouTrack带来了一些困难:

在IIS中,我有一个TeamCity网站作为重定向。该站点的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}" />
                </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>

此外,我已按照documentation

中的说明配置了以下服务器变量
HTTP_X_FORWARDED_HOST
HTTP_X_FORWARDED_SCHEME
HTTP_X_FORWARDED_PROTO

但是,当尝试通过https://server.company.com/upsource/访问UpSource时,我得到的是一个名为“Upsource”的空白页面。没有错误消息。甚至不是Fav Icon。通过http://server.company.com:8081/访问UpSource仍然可以正常工作。

我也尝试过运行以下命令链:

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

但是,这确实导致问题变为:

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

Not Found
Powered by Jetty:// 9.3.20.v20170531

如何将UpSource设置为像TeamCity和Hub一样工作?

对此的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

在YouTrack支持员工帮助解决相关的YouTrack错误的帮助下,我找到了解决此问题的原因。

原因是:当使用重定向路径通过https访问UpSource时,http和https变体中的路径必须相同。

简而言之,这不起作用:

while (1)
{
    sales = MonthSales();
    if (sales == -1)
        break;
    printf("Your salary for the month is:$%.2lf\n", CalcPay(sales));
}

但这会:

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

我通过在[InstDir] / bin中的upsource.bat上运行以下配置命令来实现此目的:

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

现在我至少可以通过https连接并登录UpSource。还有一个问题,但由于它与这个问题的主题无关,我将为它创建一个单独的问题。

答案 1 :(得分:0)

注意:在IIS 8.5上,在ARR PROXY-Settings处设置HTTP1.1。否则,websocket会连接,但是没有通信。

upsource诉upsource-2018.2.1291

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