我正在尝试在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后,一切都很好。