haproxy重写以完全替换主机名,并默认将基本URL重定向到登录名

问题描述 投票:0回答:1

用例:需要创建虚名主机名以白标服务。需要重写URL,以便一切正常,只是新URL。我想首先将用户推送到特定租户的登录名,然后登录后就可以继续正常使用。

示例:

portal.company1.com->默认情况下,这是公司1用来登录的主要URL。我们创建了一个租户,然后允许没有虚假URL的租户转到portal.company1.com/login/account/company2,一旦登录该应用程序,就会将/ login / account / company2放在一起,并仅利用继续的portal.company1.com/

我们想将lod.company2.com指向我们的haproxy并重写URL,以便它用新的虚荣URL完全替换portal.company1.com,他们可以在其新URL下访问其租户。

到目前为止,我一直在研究许多不同的堆栈溢出情况,以找到实现此目的的方法,这有点麻烦。

配置以下列出的不同测试:了解这些功能没有作用...只是保持它们的状态以显示到目前为止的工作。

frontend https_443_frontend
        mode http
        # --- TESTS SO FAR --- ###   
        #http-request replace-value Host portal.company1.com lod.company2.com if { hdr(host) -i lod.company2.com }
        #redirect prefix portal.company1.com code 301 if { hdr(host) -i lod.company2.com }
        #http-request set-header Host lod.company2.com if {hdr(host) -i lod.company2.com }
        #http-request replace-header Host portal.company1.com/login/company2 lod.company2.com if { hdr(host) -i lod.company2.com }
        #redirect prefix https://portal.company1.com code 301 if { hdr(host) -i lod.company2.com }

        acl host_company1_portal_443 hdr(host) -i portal.company1.com
        acl host_lod.company2.com_443 hdr(host) -i lod.company2.com
        use_backend apptier_backend if host_company1_portal_443
        use_backend lod_company2 if host_lod.company2.com_443

backend lod_company2
        mode http
       # option httpclose
       # option forwardfor

        # http-request set-header Host lod.company2.com if { hdr(host) -i portal.company1.com }
        #cookie SERVERID insert indirect nocache
                #########
        #http-request replace-value Host portal.company1.com lod.company2.com if { hdr(host) -i lod.company2.com }

        #redirect prefix portal.company1.com/login/company2 code 301 if { hdr(host) -i lod.company2.com }
        #http-request set-header Host lod.company2.com if {hdr(host) -i lod.company2.com }
        http-request replace-header Host portal.company1.com lod.company2.com if { hdr(host) -i lod.company2.com }
        #redirect prefix https://portal.company1.com/login/company2 code 301 if { hdr(host) -i lod.company2.com }

最终目标:

当用户点击lod.company2.com时,它将带他们进入其租户登录。利用该主机名作为重写而不是重定向。目标是屏蔽基础portal.company1.com,但后端仍具有所有功能。

url-rewriting haproxy
1个回答
0
投票

好几轮尝试找出答案之后……我们终于有了一个似乎可行的解决方案。

我们在前端需要的那一行。

http-request replace-value Location ^portal.company1.com(.*) lod.company2.com\1 if { hdr(host) -i lod.company2.com }

我们在后端需要两行

http-request replace-value Location ^https://lod.company2.com(.*)$ https://portal.company1.com\1
http-response replace-value Location ^https://portal.company1.com(.*)$ https://lod.company2.com\1
© www.soinside.com 2019 - 2024. All rights reserved.