Joh*_*lph 33

使用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.comserver.domain.com.我的IIS服务器需要ipconfig /registerdns正确更新其DNS条目.正确地意味着在这种情况下在domain.com查找区域中创建条目server,简单的A-Record是不够的.在该域中,您需要为*创建CNAME记录,因此任何子域都将重定向到server.domain.com

我遇到的一个大问题是,IIS 7.5似乎不再正确地写入applicationHost.config文件,因此端口号不会最终被持久化.这将导致一个令人讨厌的400.0 Bad Request错误,因为将达到MAX_FORWARDS限制(请求以root为单位).

要解决此问题,请将以下内容添加到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>
Run Code Online (Sandbox Code Playgroud)

编辑如果您正在运行其他站点,并获得404,除了第2部分之外,您需要创建一个虚拟站点来捕获主机名,如下面的Ian Patrick Hughes回答所述.


Ian*_*hes 10

添加到Johannes Rudolph的答案...... Jon Alb文章最适合在IIS 7.5中公开Team City的简单细分.唯一要提到的是,如果您在该服务器实例上运行其他站点,在完成第二部分之后,您可能需要创建一个虚拟站点来查找子域主机头值,因为它似乎从未执行过我的场如果没有匹配的网站,请重新编写网址.但是,如果要保护端口80上的Team City登录页面,还应允许您使用HTTP身份验证.