Назад | Перейти на главную страницу

Настройка nginx для правильной пересылки ссылок (и изображений)

Прежде всего позвольте мне отметить, что я встречал здесь этот вопрос раньше, но никогда не давал ответа, который действительно работает.

Вот проблема: у меня сервер Jenkins работает на 8080 (Ubuntu 14.04). Пытаюсь перенести его на [домен] / ci /. Хотя это довольно простая вещь и требует работы, большинство ссылок по-прежнему идут в корень, то есть [домен], что делает сервер недоступным с этого адреса. Я перепробовал все варианты с

proxy_redirect http://$host/ http://$host/ci/;

С портом или без него, полное имя хоста, localhost ... вы называете это. Ничего. Ссылки по-прежнему идут в корень сервера, поэтому многие ссылки, все изображения и сценарии недоступны.

здесь находится раздел ci в файле конфигурации. ПОНРАВИТСЯ на это, это просто не сработает.

 location /ci/ {
            proxy_pass http://localhost:8080/;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_redirect http://$host/ http://$host/ci/;
    }

Бег

curl -I [domain]/ci

Возврат

Location: http://[domain]/ci/

Но не работает. Это вполне может быть ошибкой Дженкинса, поскольку все ссылки следуют за корнем (например, <link rel="stylesheet" type="text/css" href="/static/15751a6d/css/style.css" />), но я все еще считаю, что что-то упускаю.

Проблема вашей настройки заключается в том, что Дженкинс не знает, что вы переместили его корневой URL.
Как сказано в вики Jenkins, для правильной работы вам следует использовать следующие аргументы:

JENKINS_ARGS="--webroot=/var/cache/jenkins/war --httpPort=$HTTP_PORT --ajp13Port=$AJP_PORT --prefix=/ci"

Рекомендуемая литература: Дженкинс вики