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

Apache как обратный прокси для tomcat (работает jenkins)

Я настроил apache для работы в качестве обратного прокси-сервера для tomcat, на котором запущен jenkins-CI. Я могу получить доступ к сайту извне, кроме случаев, когда я вхожу в систему с jenkins, он перенаправляется на мое имя LAN-хоста и, конечно же, выходит из строя за пределами моей сети. После этого я могу вручную ввести исходный адрес в браузер, и он будет работать нормально, пока мне не придется снова войти в систему.

Интересно, проблема в jenkins или в моей настройке прокси-сервера apache / tomcat.

Jenkins также сообщает на странице управления, что мой прокси-сервер настроен неправильно, но больше ничего не сообщает.

Конфигурация Apache VirtualHost:

<VirtualHost *:80>
    ServerName jenkins.outsideaddress
    ServerAlias ci.outsideaddress jenkins.insideaddress ci.insideaddress
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/
</VirtualHost>

Также загружаются модули proxy и proxy_http (согласно apachectl -M)

Попробуйте добавить это после ProxyPassReverse. externaladdress - это ваше внешнее полное доменное имя.

RewriteEngine on
RedirectMatch ^/(.*)$ http://outsideaddress/$1

Наконец-то я смог решить проблему (по крайней мере, я так думаю)!

Я столкнулся с аналогичной проблемой при попытке настроить репозиторий nexus maven для нормальной работы с аналогичной конфигурацией прокси-сервера apache httpd. Затем я столкнулся с проблемой, отправленной в их трекер проблем, где он неправильно построил некоторые URL-адреса.

В комментариях было предложено исправить

ProxyPreserveHost On

к виртуальному хосту в httpd conf, где находятся другие директивы конфигурации прокси. Я больше не вижу проблемы.

В Jenkins откройте «Manage Jenkins», а затем прокрутите вниз до поля «Jenkins URL». Измените это на jenkins.outsideaddress.

Для внутреннего доступа настройте свой LAN DNS для преобразования jenkins.outsideaddress в jenkins.insideaddress, либо путем переименования, либо через CNAME. Вы также можете настроить переадресацию на внутренние адреса, которые будут перенаправлять на jenkins.outsideaddress.