Как можно использовать прокси-сервер для определенного контекстного пути?

Как можно использовать прокси-сервер для определенного контекстного пути?

В настоящее время мы перемещаем приложение, которое использует контекст для выбора «профилей» (определения свойств приложения и строки подключения JDBC).

На данный момент URL-адрес выглядит следующим образом:https://www.foo.com/test/company/profil-name/ Затем вы будете перенаправлены наhttps://www.foo.com/test/company/profil-name/web/online Но есть и другие вещи, такие как контексты API: https://www.foo.com/api/имя-профиля/

Я знаю, что текущее приложение использует Apache + HAProxy на фронтенде и бэкенде:

Web => apache => local haproxy => backend haproxy => application backend

Проблема в том, что я пытаюсь воспроизвести ту же конфигурацию, но прокси работает некорректно (я тестирую с измененным файлом хоста):

https://www.foo.com/test/company/profil-name/перенаправляет наhttps://www.foo.com/web/test/company/profil-name/online

Это похоже на то, как если бы приложение приняло начальный контекст в качестве строки параметров.

Я сделал некоторую комбинацию в конфигурации haproxy / apache, и когда я использую простую конфигурацию обратного прокси без выбора контекста профилей, это работает (за исключением того, что у меня только один профиль...):

https://www.foo.com/web/online

У вас уже было такое поведение? Я использую haproxy 1.8 и apache httpd 2.4.

Вот как выглядит моя конфигурация haproxy:

frontend default
        bind *:80
        capture request header X-Forwarded-For len 15
        acl rest_url path /api
        acl rest_url path_beg /api/
        acl app1_profile path_beg /test/company/app1
        acl app2_profile path_beg /test/company/app2

        use_backend app3 if rest_url 
        use_backend app1 if app1_profile
        use_backend app2 if app2_profile

backend app1
        cookie SERVERID insert indirect nocache httponly
        #http-request redirect location http://test.domain.com%[url,regsub(^/web/,/test/company/app1/web/,)]%[query] if { path_beg /web/ }
        #http-request set-var(txn.path) path
        #http-response redirect location https://test.domain.com/test/company/app1/var(txn.path) if ! { path_beg /test/ }
        #reqirep ^Host:\ .*$ Host:https://test.domain.com/test/company/app1/
        server app1_backend 192.168.10.15:80

Конфигурация Apache:

   ProxyRequests On
   ProxyPreserveHost On

   <Location /test/company/app1/>
      ProxyPass http://localhost:80/
      ProxyPassReverse http://localhost:80/
   </Location>

Я потратил часы, чтобы попытаться получить рабочую конфигурацию, но она все еще не работает. Надеюсь, кто-нибудь сможет мне помочь.

Спасибо,
Себастьян.

Связанный контент