Я настроил 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.