我正在尝试在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/;
}
答案 0 :(得分:14)
我使用标准的Teamcity Windows安装程序做到了这一点,并且可能它可以在任何平台上运行。
根据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后,一切都很顺利。