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

Правила Haproxy (set-header) не работают и не меняют базовый URL-адрес запроса

Я пытаюсь интегрировать облачное приложение adminui. У меня есть доступ к URL https://myexample.com/adminui/

Это работает следующим образом:

 Request 
     https://myexample.com/adminui/    

 Response
     http://uaa.devtest7.io/oauth/authorize?response_type=code&client_id=admin_ui_client&redirect_uri=https://admin.devtest7.io/login

Вышеуказанный ответ правильный, но иногда я получаю ответ, в котором URL-адрес перенаправления использует имя хоста в Интернете.

http://uaa.devtest7.io/oauth/authorize?response_type=code&client_id=admin_ui_client&redirect_uri=https://myexample.com/login

Я изменяю это в правиле haproxy следующим образом. Работает как часы. Но в одной из установок возникает эта проблема.

backend bk_adminui
    mode http
    http-request set-header Host admin.devtest7.io
    reqrep ^([^\ ]*\ /)adminui[/]?(.*)     \1\2

Серверное приложение Code ruby

def local_redirect_uri(request)
      "#{request.base_url}/login"
    end

Приложение использует "# {request.base_url} / login для создания uri перенаправления. Иногда он работает нормально, а иногда - нет. Я изменяю имя хоста в haproxy acl. Нужно ли мне также изменять какие-либо другие поля? У base_url и Host такой же.

Какие-либо предложения?

ОБНОВЛЕНО

Я проверял tcpdump своего серверного приложения, я нашел это

Host: admin.devtest7.io
X-Forwarded-Host: myexample.com

Этот X-Forwarded-Host переводится в base_url?

http-request set-header X-Forwarded-Host %[req.hdr(Host)]

Вышеупомянутая строка сработала для меня.