TeamCity背后是nginx代理

时间:2011-05-20 11:45:24

标签: proxy nginx rewrite teamcity

我正在尝试在nginx后面设置TeamCity。我希望https://public.address.com/teamcity/ ...重定向到http://127.0.0.1:8111/ ...,但即使nginx成功完成此操作,登录页面也会返回如下所示的引用:

<script type="text/javascript" src="/res/-8762791360234593415.js?v=1305815890782"></script>

显然,这不会做,并且摆弄rootURL设置(服务器网址: 服务器配置)没有任何区别。

如何在非根网址下的代理后面运行TeamCity?


FWIW,这是我的nginx配置的相关部分:

location /teamcity/ {
    proxy_pass       http://127.0.0.1:8111/;
    proxy_redirect   http://127.0.0.1:8111/ https://$host/teamcity/;
}

2 个答案:

答案 0 :(得分:14)

我使用标准的Teamcity Windows安装程序做到了这一点,并且可能它可以在任何平台上运行。

更改Teamcity位置

根据comment by a JetBrains employee

  

要将TeamCity地址从http://server/更改为http://server/teamcity/,请将<TeamCity home>\webapps\ROOT目录重命名为<TeamCity home>\webapps\teamcity

另请注意,每次升级Teamcity时都需要重命名此目录。

代理配置

nginx配置看起来像是:

    location /teamcity/ {
            proxy_pass http://teamcity-server.domain.com/teamcity/;
    }

或者您可以使用Apache(由于我的身份验证要求,我已切换到Apache):

    <Location /teamcity>
            ProxyPass http://teamcity-server.domain.com/teamcity
            ProxyPassReverse http://teamcity-server.domain.com/teamcity
    </Location>

重定向旧网址

我还创建了一个 new <Teamcity home>\webapps\ROOT,并在其中放入一个index.jsp文件,该文件会重定向到新的网址,以便旧链接继续有效(例如,如果有人转到http://teamcity-server.domain.com它会重定向到http://teamcity-server.domain.com/teamcity):

<!DOCTYPE html>
<html>
<head>
  <title>TeamCity</title>
  <meta http-equiv="refresh" content="0;url=/teamcity/overview.html"/>
</head>
<body>
  <!-- no content -->
</body>
</html>

您也可以在nginx / apache中进行重定向,但在Teamcity服务器上进行操作意味着如果有人直接在teamcity Web服务器上(而不是通过您的代理)转到旧URL,它们仍然会被正确地重定向(而不是一个404)。

答案 1 :(得分:3)

(我最终自己找到了一个解决方案......)

安装tomcat,然后安装TeamCity的WAR版本,该版本位于Java EE Container选项卡上方的下载区域。这会在您安装WAR时可以选择的基本URL下公开TeamCity。

最简单的方法是将.war文件复制到Tomcat的webapps目录中,为其提供与所需基本URL匹配的名称。例如,将teamcity.war安装到$TOMCAT_HOME/webapps将在网址http://localhost:8080/teamcity下加载TeamCity(假设默认的Tomcat安装)。从https://public.address.com/teamcity到这个内部地址的代理应该在nginx中相当直接。

我在安装.war文件后立即运行时遇到了麻烦,但重新启动Tomcat后,一切都很顺利。