有任何想法吗?
4 回答
使用 IIS 7.5,您可以使用应用程序请求路由将请求路由teamcity.server.domain.com:80
到 Tomcat 的server.domain.com:81
. 我认为这种方法更优越,因为 Tomcat 连接器在 WS2008 x64 下似乎有点不稳定。
Jon Alb 有一篇关于如何在 WS2008 上配置 TeamCity 和 IIS 的文章:
此外,您需要确保您的 DNS 可以解析teamcity.server.domain.com
为server.domain.com
. 我的 IIS 服务器需要ipconfig /registerdns
正确更新其 DNS 条目。正确的意思是在这种情况下,在 domain.com 查找区域中创建一个域server
条目,一个简单的 A 记录是不够的。在该域中,您需要为 * 创建 CNAME 记录,因此任何子域都将被重定向到server.domain.com
我遇到的一个大问题是 IIS 7.5 似乎不再正确写入applicationHost.config
文件,因此端口号最终不会被保留。这将导致一个令人讨厌的400.0 Bad Request
错误,因为将达到 MAX_FORWARDS 限制(请求以圆圈为根)。
要解决此问题,请将以下内容添加到C:\Windows\System32\inetsrv\config
:
<webFarms>
<webFarm name="teamcity" enabled="true" adminUserName="" adminPassword="[enc:AesProvider:2blZ7roifGTktpn8zBBuVQ==:enc]" primaryServer="">
<server address="localhost" enabled="true">
<applicationRequestRouting httpPort="YOURPORTHERE!!!" />
</server>
<applicationRequestRouting>
<loadBalancing algorithm="WeightedRoundRobin" />
<protocol reverseRewriteHostInResponseHeaders="true" />
</applicationRequestRouting>
</webFarm>
</webFarms>
编辑如果您正在运行其他站点并获得 404,除了遵循第 2 部分之外,您还需要创建一个虚拟站点来捕获主机名,如下面的 Ian Patrick Hughes 回答状态。
要添加到 Johannes Rudolph 的答案... Jon Alb 文章是对在 IIS 7.5 中公开 Team City 进行简单细分的最佳选择。唯一要提到的是,如果您在该服务器实例上运行其他站点,在您完成他的第二部分之后,您可能需要创建一个虚拟站点以查找子域主机标头值,因为 IIS 似乎从未执行过我的农场如果没有匹配的站点,则重新编写 url。但是,如果您想保护端口 80 上的 Team City 登录页面,这也应该允许您使用 HTTP 身份验证。
在 IIS 7 中托管 TeamCity 的分步指南
http://blog.endjin.com/2010/11/a-step-by-step-guide-to-hosting-teamcity-in-iis-7/