更改 http 响应中的位置

changing Location in the http response

访问 https://myexample.com/adminui/ 服务器时发送 303,我在浏览器中收到如下响应

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

我要它改

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

我尝试了 haproxy.config 文件中的以下条目,但这不起作用。

resirep ^Location:\ http://uaa.devtest3.io/oauth/authorize?response_type=code&client_id=admin_ui_client&redirect_uri=https://admin.devtest3.io/login   Location:\ http://myexample.com/uaa/oauth/authorize?response_type=code&client_id=admin_ui_client&redirect_uri=https://myexample.com/adminui/login

已更新 我需要进一步的帮助来改变

https://uaa.devtest3.io/login;jsessionid=4A0ADA8DDB7CD09C2B50F4A41945BBDB to https://myexample.com/uaa/login;jsessionid=4A0ADA8DDB7CD09C2B50F4A41945BBDB

我试过了

rspirep ^Location:\ (https?://uaa.devtest3.io;jsessionid=([0-9A-Z](.*) )Location:\ myexample.com  if hdr_location

这不是 working.I 感觉我正在使用的正则表达式 wrong.I 不是这个正则表达式的经文。 请在这方面指导我

首先,据我所知,resirep 命令似乎并不存在。我认为您需要的命令是 rspirep。其次,如果您使用的是 HAProxy 1.5 或更低版本,则需要转义 /&? 以及空格。

生成的配置:

rspirep ^Location:\ http:\/\/uaa.devtest3.io\/oauth\/authorize\?response_type=code\&client_id=admin_ui_client\&redirect_uri=https:\/\/admin.devtest3.io\/login   Location:\ http:\/\/myexample.com\/uaa\/oauth\/authorize\?response_type=code\&client_id=admin_ui_client\&redirect_uri=https:\/\/myexample.com\/adminui\/login

希望对您有所帮助。

更新*修复

rspirep ^Location:\ https:\/\/uaa.devtest3.io\/login;jsessionid=([0-9A-Z]*)   Location:\ https:\/\/myexample.com\/uaa\/login;jsessionid=

([0-9A-Z]*) - 匹配并捕获包含大写字母和数字的任意长度的字符串。

- 将第一个捕获的字符串放在这里

*在 HAProxy 1.5.15 中测试。