Haproxy 规则(set-header)不起作用,并且它不会改变请求的基本 URL

Haproxy 规则(set-header)不起作用,并且它不会改变请求的基本 URL

我正在尝试集成 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)]

上面的这句话对我有用。

相关内容