You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

通过IIS反向代理配置YouTrack以HTTPS方式运行

我之前帮朋友排查过类似JetBrains服务通过IIS反向代理转HTTPS的问题,结合官方文档和踩过的各种坑,给你整理了一套排查和配置步骤,你可以逐一核对:

第一步:先确认IIS必备组件已安装

IIS反向代理依赖两个核心组件,必须先装好:

  • URL重写模块:负责请求的转发和规则匹配
  • 应用程序请求路由(ARR):处理反向代理的核心逻辑

你可以通过服务器管理器的「角色和功能」添加这两个组件,或者用Web平台安装器搜索安装,确保组件版本和IIS版本兼容。

第二步:先搞定YouTrack的反向代理配置(再复制到其他服务)

先从YouTrack入手,配置成功后再推广到TeamCity、Hub和UpSource,步骤如下:

  1. 在IIS中创建一个新网站,绑定HTTPS:
    • 绑定的域名要和你期望的访问域名一致(比如server.company.com
    • 选择有效的SSL证书(确保证书覆盖该域名,没有过期或不信任的问题)
  2. 在这个新网站的根目录下创建web.config文件,填入以下配置:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Reverse Proxy to YouTrack" stopProcessing="true">
          <match url="(.*)" />
          <action type="Rewrite" url="http://server.company.com:8080/issues/{R:1}" />
          <serverVariables>
            <!-- 传递转发头,让YouTrack识别HTTPS环境 -->
            <set name="HTTP_X_FORWARDED_HOST" value="{HTTP_HOST}" />
            <set name="HTTP_X_FORWARDED_PROTO" value="https" />
            <set name="HTTP_X_FORWARDED_PORT" value="443" />
          </serverVariables>
        </rule>
      </rules>
      <outboundRules>
        <!-- 替换YouTrack响应中的HTTP链接为HTTPS,避免混合内容错误 -->
        <rule name="Replace HTTP links with HTTPS" preCondition="Response Is HTML">
          <match filterByTags="A, Form, Img" pattern="http://server.company.com:8080/issues/(.*)" />
          <action type="Rewrite" value="https://server.company.com/{R:1}" />
        </rule>
      </outboundRules>
    </rewrite>
    <httpProtocol>
      <customHeaders>
        <add name="X-Forwarded-Proto" value="https" />
        <add name="X-Forwarded-Port" value="443" />
      </customHeaders>
    </httpProtocol>
  </system.webServer>
</configuration>
  1. 关键配置补充:
    • 允许修改服务器变量:在IIS管理器中打开该网站的「URL重写」功能,点击右侧的「查看服务器变量」,添加HTTP_X_FORWARDED_HOSTHTTP_X_FORWARDED_PROTOHTTP_X_FORWARDED_PORT这三个变量,并勾选「允许修改」
    • 修改YouTrack自身的Base URL:登录YouTrack后台,进入「Settings > General Settings > Base URL」,将其设置为你期望的HTTPS地址(比如https://server.company.com),这一步非常重要,否则YouTrack会生成错误的内部链接
第三步:排查常见的坑

如果配置后还是无法访问,检查以下几个点:

  • 证书有效性:用浏览器直接访问HTTPS站点,看是否有证书警告,确保证书是信任的且覆盖了目标域名
  • ARR代理开关:在IIS管理器的「Application Request Routing Cache」中,点击右侧的「Server Proxy Settings」,确保「Enable proxy」已勾选,同时可以适当调整超时时间(JetBrains服务启动或响应慢可能导致超时)
  • 端口与防火墙:确认服务器的443端口开放,没有被其他服务占用;同时服务器本地能访问YouTrack的8080端口(可以用curl http://server.company.com:8080/issues测试)
  • 混合内容问题:如果页面加载不全,打开浏览器控制台看是否有混合内容错误,这时候需要检查outbound规则是否正确替换了所有HTTP链接,或者在YouTrack后台开启「强制HTTPS」选项(部分版本支持)
  • 其他服务适配:TeamCity(默认8111)、Hub(默认8082)、UpSource(默认8083)的配置逻辑和YouTrack一致,只需要修改web.config中的Rewrite URL为对应服务的地址,同时修改各自后台的Base URL为HTTPS地址
第四步:调试技巧
  • 开启IIS的「Failed Request Tracing」:可以跟踪请求的重写过程,查看规则是否匹配、变量是否正确设置,定位具体的错误点
  • 查看YouTrack日志:在YouTrack安装目录的logs文件夹中,查看access.logerror.log,看是否有转发头相关的错误或请求被拒绝的记录

内容的提问来源于stack exchange,提问作者Kira Resari

火山引擎 最新活动