【问题标题】:Setting up UpSource behind IIS Reverse Proxy for HTTPS ~ TypeError: Failed to fetch在 IIS 反向代理后面为 HTTPS 设置 UpSource ~ TypeError: Failed to fetch
【发布时间】:2018-09-13 14:45:40
【问题描述】:

我正在尝试使用反向 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”有关。我已经尝试过查找,但到目前为止找不到任何有用的信息。

如果有人对如何解决此问题有任何想法,我很乐意就此获得更多意见

【问题讨论】:

    标签: iis https typeerror reverse-proxy upsource


    【解决方案1】:

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

    上面web.config的配置其实是正确的。但是,还需要按照正确的顺序执行以下步骤:

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

    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 在其基地址后附加了一个额外的 /hub,这就是为什么 UpSource 的 hub-url 设置以 /hub/hub 结尾的原因。

    之后,我需要做的就是将重定向 URL 添加到 Hub > Settings > Services > UpSource 中 UpSource 的允许重定向 URL 列表中,现在它可以正常工作了。

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

    【讨论】:

    • 如果作为服务运行,您可以在 conf\internal\launcher.service.settings.xml 中的 arguments 标签中添加禁用压缩的命令行参数。
    猜你喜欢
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 1970-01-01
    • 2020-09-14
    • 2019-06-08
    • 2018-04-03
    • 2020-07-10
    相关资源
    最近更新 更多