nginx代理背后的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设置(服务器 URL:服务器配置中)没有任何区别。

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


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

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

我使用标准的Teamcity Windows安装程序完成了此操作,大概它可以在任何平台上工作。

更改团队城市位置

根据JetBrains员工的评论:

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

另请注意,每次升级 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>

重定向旧网址

我还创建了一个新的<Teamcity home>webappsROOT,并在其中放入了一个index.jsp文件,该文件将重定向到新URL,以便旧链接继续工作(例如,如果有人转到 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)。

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

安装

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

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

安装.war文件后,我无法立即运行它,但是重新启动Tomcat后,一切都很好。

最新更新