Я использую две службы за сервером Apache: Jenkins (порт 8080) и SonarQube (порт 9000).
Мой конфиг apache выглядит так:
<VirtualHost *:80>
ServerName server
Redirect permanent / https://server.domain.com/
</VirtualHost>
<VirtualHost *:80>
ServerName server.domain.com
Redirect permanent / https://server.domain.com/
</VirtualHost>
<VirtualHost *:443>
ServerName server.domain.com
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key
ProxyPass /jenkins http://localhost:8080/jenkins nocanon
ProxyPassReverse /jenkins http://localhost:8080/jenkins
ProxyPassReverse /jenkins http://server.domain.com/jenkins
ProxyPassReverse /jenkins https://server.domain.com/jenkins
ProxyPass /sonar http://localhost:9000/sonar nocanon
ProxyPassReverse /sonar http://localhost:9000/sonar
AllowEncodedSlashes NoDecode
ProxyRequests Off
ProxyPreserveHost On
<Proxy http://localhost:8080/*>
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
Кажется, что все работает нормально, за исключением того, что Дженкинс жалуется на это сообщение: похоже, что ваш обратный прокси-сервер нарушен.
Когда я запускаю тест ReverseProxySetupMonitor, предоставленный Jenkins, сообщение об ошибке указывает на то, что что-то с обратным прокси-сервером настроено неправильно, поскольку не заменяет http на https:
$ curl -iLk -e https://server.domain.com/jenkins/manage https://server.domain.com/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/test
[...]
404 http://server.domain.com/jenkins/manage vs. https://server.domain.com/jenkins/manage
[...]
Это появилось только после того, как я включил SSL на сервере (который теперь использует самозаверяющий сертификат).
Вопрос: Как исправить настройку обратного прокси, чтобы Дженкинс был доволен? Бонусные баллы за советы по улучшению конфигурационного файла apache.
Я уже проверил следующие два связанных вопроса:
источник
sudo a2enmod headers
, иначе я получил быInvalid command 'RequestHeader'
ProxyPassReverse
директивы для одного и того же пути (/
)?Настройка внешнего интерфейса Windows Apache для Jenkins
Основными отличиями здесь являются:
Моя настройка:
Установить было в d: \ (не c: \ - адаптировать это к вашим потребностям)
Дженкинс на порте 8080
Разархивируйте Apache httpd-2.4.18-win64-VC14.zip (с http://www.apachelounge.com/download/ ) в d: \.
Установите OpenSSL Win64OpenSSL_Light-1_0_2f.exe ( http://slproweb.com/products/Win32OpenSSL.html ) в d: \ OpenSSL-Win64
Создайте сертификат ssl:
Перейдите в каталог bin OpenSSL и запустите магию:
Скопируйте файлы. * Сервера из d: \ OpenSSL-Win64 \ bin в D: \ Apache24 \ conf
Отредактируйте d: \ Apache24 \ conf \ httpd.conf:
Найдите и замените «c: /» на «d: /»
Измените после строки «Listen 80», добавив «Listen 443»:
Раскомментируйте эти строки:
Обновите "#ServerName www.example.com:80" до:
Добавьте это в конце:
Я не остановил Дженкинса, слушающего порт 8080, поэтому я могу все еще соединиться, если apache терпит неудачу. Моя цель при использовании https - скрыть параметры.
источник