我们有一个IIS 7网络服务器已配置,并希望创建一个反向代理为一个团队城市安装使用雄猫在同一台机器上。
IIS 服务器站点是https://somesite
,我希望 TeamCity 显示为https://somesite/teamcity
重定向到http://localhost:portnumber
。
我已经安装了IIS URL 重写扩展和应用程序请求路由尝试设置反向代理但无法使其工作。
我找到的最接近的答案是一个古老的 StackOverflow 问题:
https://stackoverflow.com/questions/331755/how-do-i-setup-teamcity-for-public-access-over-https
不幸的是,没有任何可行的例子。
我搜索了相当多,但似乎找不到相关的例子。
任何帮助都将不胜感激!
答案1
我刚刚花了大约 4 个小时尝试为 TeamCity 配置 SSL(并使用此线程中的答案),我设法使用服务器场选项使其正常工作。
我配置了一个 TeamCity 服务器场,其中包括使用端口 8080 的 127.0.0.1 上的 TeamCity 服务器,并允许应用程序路由规则创建相应的服务器场路由规则。
然后,我创建了一个名为 TeamCitySecureProxy 的网站,并使用自签名证书对其进行了配置。在绑定上,我只配置了 https/443(没有 http/80)。
我遗漏的部分:-然后,我单击 IIS 中“服务器场”下的“TeamCity”节点,从“服务器场”窗格中选择“代理”,然后勾选“在响应标头中反向重写主机”。
我现在有一个安全的端点来访问我的纯 http TeamCity 安装。
答案2
您也可以使用连接器来实现这一点。
Apache 可以直接提供旧的 ISAPI 连接器(重定向器),或者 RiaForge 也可以提供新的 ISAPI 连接器(这个似乎更容易运行)。
答案3
确保在 IIS GUI 中启用了 ARR 代理。您可能希望保留主机标头(可能需要手动编辑 applicationHost.config,或使用 appcmd 来设置它)并启用响应标头选项中的反向重写主机,以便浏览器发出请求并看到与 SSL 证书主机匹配的响应。
- 443 上的 IIS 站点(也可能是 80?)-- 监听所有请求(不指定主机名)
- 查看所有传入路径:匹配 URL
(.*)
- 查找 TeamCity 路径,保留路径的其余部分:条件
{URL}
匹配^teamcity(/.*)?
- 使用保留路径重写:动作重写,
http://localhost:port/{C:1}
- 附加查询字符串已检查
- 并停止处理可能已检查的进一步规则
我认为这样就行了。
<rule name="Demo Rule" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{URL}" pattern="^teamcity(/.*)?" />
</conditions>
<action type="Rewrite" url="http://localhost:8080/{C:1}" />
</rule>
答案4
我刚刚自己做了这件事并且刚刚发布了一篇有关它的博客。
您似乎已经安装了所有必需的,现在您只需要设置服务器:
http://bronumski.blogspot.com/2010/10/host-teamcity-in-iis7.html