在IIS反向代理后面设置UpSource用于HTTPS~TypeError:无法获取

时间:2018-04-04 06:28:41

标签: iis https typeerror reverse-proxy upsource

我正在尝试使用反向IIS代理在单个服务器上通过https设置UpSource以及YouTrack,TeamCity和Hub。

情况如下:

UpSource的http版本位于http://server.company.com:8081/upsource,工作正常。我希望可以通过https://server.company.com/upsource访问它。但是,虽然可以通过https地址访​​问UpSource,但连接会立即中断并出现以下错误消息:

Backend is not available

TypeError: Failed to fetch

我发现这个错误很奇怪而且令人困惑,因为后端似乎可用并且正在运行,因为http://server.company.com:8081/upsource完美无缺。

至于我的配置,我主要按照the documentation中列出的步骤进行设置,在需要的地方进行修改,以说明我们在一台服务器上运行四个JetBrains服务并在同一个IIS上运行反向代理。

IIS代理的当前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 Hub" stopProcessing="true">
                    <match url="^hub(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8082/hub{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 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>
                </rule>
                <rule name="Reverse Proxy to UpSource" stopProcessing="true">
                    <match url="^upsource(.*)" />
                    <action type="Rewrite" url="http://server.company.com:8081/upsource{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 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和Hub。然而,对于UpSource,似乎仍然缺少一些东西,这可能与“TypeError:Failed to fetch”有关。我已经尝试过了,但到目前为止找不到任何有用的信息。

如果有人有任何想法如何解决这个问题,我会非常乐意为此提供额外的意见

1 个答案:

答案 0 :(得分:0)

好的,所以我想出了如何做到这一点:

web.config的上述配置实际上是正确的。但是,需要另外执行以下步骤,并按正确顺序执行:

注意:所有以hub.bat开头的命令都需要在hub.bat中的[Hub Installation Directory]\bin文件上执行,所有以upsource.bat开头的命令都需要在{upsource.bat上执行1}}文件[UpSource Installation Directory]\bin

upsource.bat stop
hub.bat stop

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

hub.bat start
upsource.bat start --J-Dbundle.websocket.compression.enabled=false

注意:我不知道原因,但是Hub在其基地址后附加了一个额外/集线器,这就是为什么UpSource的hub-url设置以/hub/hub结尾。

之后,我需要做的就是将重定向URL添加到Hub中的UpSource允许的重定向URL列表中。设置&gt;服务&gt; UpSource,现在效果很好。

嗯,几乎完美。每当服务器重新启动时,我都需要手动重启UpSource,因为我还没有找到一种方法来将upsource注册为具有--J-Dbundle.websocket.compression.enabled=false参数的服务,但除此之外,一切都运行良好。