Я изо всех сил пытаюсь настроить Jenkins в подкаталоге за nginx. На локальном хосте работают 2 приложения. Один из них - jenkins, который должен быть доступен на сайте foo.com/jenkins. Другое приложение находится на foo.com/.
Запросы к Дженкинсу не должны иметь /jenkins/
префикс, поэтому я его переписываю (удаляю). Но хотя начальная страница jenkins загружается, все ресурсы (js, css, ...) отсутствуют, и сайт выглядит некрасиво. Похоже, что у запросов нет префикса jenkins и они перенаправляются в другое приложение (см. Ссылку на снимке экрана).
Как я могу направить запрос со страницы jenkins правильному обработчику?
server {
listen 80;
server_name foo.com;
# jenkins server in subdir:
location ^~ /jenkins/ {
rewrite ^/jenkins(.*) /$1 break;
proxy_pass http://127.0.0.1:9500/;
}
# main app:
location / {
proxy_pass http://127.0.0.1:8081;
}
}
Копировать вставить из документации:
Кроме того, вы должны убедиться, что Jenkins настроен для прослушивания запросов к папке / jenkins / (например, http://10.0.0.100:8080/jenkins/ вместо того http://10.0.0.100:8080/). Сделайте это, добавив параметр --prefix = / дженкинс в файл начальной конфигурации Jenkins по умолчанию. В моей системе (Ubuntu 12.04 LTS) файл конфигурации / и т.д. / по умолчанию / Дженкинс. Например, вот полный список параметров JENKINS_ARG (единственная часть, которую я добавил, была --prefix = / дженкинс):
JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=/jenkins"
После настройки вы также должны установить URL-адрес, используемый пользовательским интерфейсом Jenkins, в Jenkins> Управление Jenkins> Местоположение Jenkins> URL Jenkins примерно так: "https: //domain.tld/jenkins/.
Использование разделения vhosts на nginx по подкаталогам, что вызывает некоторые проблемы:
prefix
на JENKINS_ARG
foo.com
) не должен использовать этот путь /jenkins
больше, это не лучшая практика, потому что после /
, весь путь маршрутизации должен принадлежать одному приложению foo.com
Я думаю, вы можете попробовать использовать поддомен, все указывают на IP вашего сервера (конфигурация на стороне DNS)
Затем вы можете управлять vhost каждым серверным блоком nginx
upstream jenkins {
server 127.0.0.1:8080 fail_timeout=0;
}
server {
server_name foo.com
...
}
server {
server_name jenkins.foo.com
...
}
Документы для справки: https://wiki.jenkins.io/display/JENKINS/Running+Jenkins+behind+Nginx