TeamCity за прокси-сервером nginx - PullRequest
8 голосов
/ 20 мая 2011

Я пытаюсь настроить TeamCity за nginx. Я бы хотел, чтобы 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-адрес сервера: в Конфигурация сервера ) не имеет значения.

Как запустить TeamCity за прокси-сервером под некорневым URL?


FWIW, вот соответствующая часть моей конфигурации nginx:

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

Ответы [ 2 ]

14 голосов
/ 01 августа 2013

Я сделал это с помощью стандартного установщика Teamcity для Windows, и, вероятно, он будет работать на любой платформе.

Изменить местоположение Teamcity

Согласно комментарию сотрудника JetBrains :

Чтобы изменить адрес 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>

Перенаправить старый URL

Я также создал новый <Teamcity home>\webapps\ROOT и поместил в него файл 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 означает, что кто-то переходит на старый URL-адрес непосредственно на веб-сервере teamcity (вместочерез ваш прокси) они все равно будут правильно перенаправлены (вместо 404).

3 голосов
/ 21 мая 2011

(я сам нашел решение ...)

Установите tomcat, затем установите WAR-версию TeamCity, которая находится в области загрузки над вкладкой Java EE Container . Это предоставляет TeamCity базовый URL-адрес, который вы можете выбрать при установке WAR.

Самый простой подход - скопировать файл .war в каталог веб-приложений Tomcat, присвоив ему имя, соответствующее желаемому базовому URL. Например, установка teamcity.war в $TOMCAT_HOME/webapps загрузит TeamCity под URL http://localhost:8080/teamcity (при условии установки Tomcat по умолчанию). Прокси от https://public.address.com/teamcity до этого внутреннего адреса должна быть довольно простой в nginx.

У меня были проблемы с его запуском сразу после установки .war-файла, но после перезапуска Tomcat все прошло хорошо.

...