Я пытаюсь интегрировать облачное приложение 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)]
Вышеупомянутая строка сработала для меня.