У меня настроен HAProxy для завершения SSL-соединений для сервера Jenkins CI, проксирующий на бэкенд сервера Jenkins CI через обычный старый HTTP. Я могу успешно выполнять [пока] все операции, которые мне нужны в веб-интерфейсе сервера Jenkins CI, включая управление экземпляром.
Однако я получаюпредупреждение Jenkins «Настройка обратного прокси-сервера сломана». Это вызвано более строгой проверкой конфигурации прокси-сервера, начиная с версии Jenkins 1.572, которая использует URL-адрес в виде:
https://host-name/jenkins/administrativeMonitor/hudson.diagnosis.ReverseProxySetupMonitor/testForReverseProxySetup/a%2Fb/
для проверки конфигурации обратного прокси-сервера. Типичная причина выдаваемого предупреждения — декодирование %2F
в прямой слеш обратным прокси-сервером, что приводит к ошибке 404.
Кажется, есть хорошо документированные решения по настройке конфигураций Apache и обратного прокси-сервера nginx, чтобы устранить это предупреждение. Чего я не смог найти, так это чего-то похожего на опцию Apache "AllowEncodedSlashes On" или конфигурацию nginx "proxy_pass", или даже пример настройки Jenkins за HAProxy (который я использую вместо Apache или nginx, потому что у нас уже есть HAProxy для других приложений).
- Операционная система: CentOS 6.6
- Версия HAProxy: 1.5.2-2
- Версия Дженкинса: 1.610
решение1
Это не было, как оказалось, проблемой с кодированием/декодированием URL. Это была просто ошибка оператора с моей стороны - при завершении SSL на любом прокси-сервере выдолженубедитесь, чтоX-Proxy-Protoзаголовок установлен наhttpsтак что все URL-адреса, сгенерированные Jenkins таким образом, используют схемуhttps. Я пропустил строку в документации на странице устранения неполадок. Простое добавление:
http-request set-header X-Forwarded-Proto https
В определении бэкэнда удалено предупреждение.