通过IIS反向代理配置YouTrack以HTTPS方式运行
我之前帮朋友排查过类似JetBrains服务通过IIS反向代理转HTTPS的问题,结合官方文档和踩过的各种坑,给你整理了一套排查和配置步骤,你可以逐一核对:
第一步:先确认IIS必备组件已安装
IIS反向代理依赖两个核心组件,必须先装好:
- URL重写模块:负责请求的转发和规则匹配
- 应用程序请求路由(ARR):处理反向代理的核心逻辑
你可以通过服务器管理器的「角色和功能」添加这两个组件,或者用Web平台安装器搜索安装,确保组件版本和IIS版本兼容。
第二步:先搞定YouTrack的反向代理配置(再复制到其他服务)
先从YouTrack入手,配置成功后再推广到TeamCity、Hub和UpSource,步骤如下:
- 在IIS中创建一个新网站,绑定HTTPS:
- 绑定的域名要和你期望的访问域名一致(比如
server.company.com) - 选择有效的SSL证书(确保证书覆盖该域名,没有过期或不信任的问题)
- 绑定的域名要和你期望的访问域名一致(比如
- 在这个新网站的根目录下创建
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>
- 关键配置补充:
- 允许修改服务器变量:在IIS管理器中打开该网站的「URL重写」功能,点击右侧的「查看服务器变量」,添加
HTTP_X_FORWARDED_HOST、HTTP_X_FORWARDED_PROTO、HTTP_X_FORWARDED_PORT这三个变量,并勾选「允许修改」 - 修改YouTrack自身的Base URL:登录YouTrack后台,进入「Settings > General Settings > Base URL」,将其设置为你期望的HTTPS地址(比如
https://server.company.com),这一步非常重要,否则YouTrack会生成错误的内部链接
- 允许修改服务器变量:在IIS管理器中打开该网站的「URL重写」功能,点击右侧的「查看服务器变量」,添加
第三步:排查常见的坑
如果配置后还是无法访问,检查以下几个点:
- 证书有效性:用浏览器直接访问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.log和error.log,看是否有转发头相关的错误或请求被拒绝的记录
内容的提问来源于stack exchange,提问作者Kira Resari




