我正在尝试集成 Cloud Foundry 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
编写 Ruby 服务器应用程序
def local_redirect_uri(request)
"#{request.base_url}/login"
end
应用程序使用“#{request.base_url}/login”来创建重定向 uri。有时它可以正常工作,但有时则不然。我正在修改 haproxy acl 中的主机名。我是否还需要更改任何其他字段?base_url 和主机是否相同。
有什么建议么?
更新
我在检查我的服务器应用程序的 tcpdump 时发现了这个
Host: admin.devtest7.io
X-Forwarded-Host: myexample.com
这个 X-Forwarded-Host 正在 base_url 中翻译吗?
答案1
http-request set-header X-Forwarded-Host %[req.hdr(Host)]
上面的这句话对我有用。