Как настроить HAProxy для передачи незакодированного URL-адреса на бэкэнд Jenkins?

Как настроить HAProxy для передачи незакодированного URL-адреса на бэкэнд Jenkins?

У меня настроен 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

В определении бэкэнда удалено предупреждение.

Связанный контент