haproxy переписать, чтобы полностью заменить имя хоста и перенаправить базовый URL по умолчанию для входа - PullRequest
0 голосов
/ 25 февраля 2020

Вариант использования: необходимо создать имя хоста тщеславия для службы whitelabel. Нужно переписать URL, чтобы все как обычно работало, просто новый URL. Я хотел бы сначала получить sh пользователей для входа в указанный субстанент c, а затем после входа в систему можно продолжать использовать в обычном режиме.

Пример:

portal.company1.com -> по умолчанию это основной URL, который компания 1 использует для входа в систему. Мы создаем арендаторов, которые затем позволяют им без URL тщеславия go к portal.company1.com/login/account/company2 после входа в приложение, сбрасывая / login / account / company2 все вместе и просто используя продолжение portal.company1. com /

Мы хотим указать lod.company2.com на наш haproxy и переписать URL-адрес, чтобы он полностью заменил portal.company1.com новым URL-адресом тщеславия и мог получить доступ к своему арендатору под своим новым URL-адресом. ,

Я просматривал несколько различных переполнений стека, чтобы найти способ сделать это до сих пор немного затруднительно.

config с различными тестами, перечисленными ниже: Понимание того, что они не работают ... просто держать их рядом, чтобы показать мою работу до сих пор.

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, но по-прежнему иметь все функции в бэкэнде.

1 Ответ

0 голосов
/ 26 февраля 2020

Хорошо, после нескольких раундов попыток выяснить это ... у нас наконец есть решение, которое, кажется, работает.

Одна строка, которая нам была нужна на переднем конце.

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
...