¿Cómo puedo hacer proxy en una ruta de contexto específica?

¿Cómo puedo hacer proxy en una ruta de contexto específica?

Actualmente estamos reubicando una aplicación que usa contexto para seleccionar "perfiles" (definir las propiedades de la aplicación y la cadena de conexión JDBC)

Por ahora, la URL es de este tipo:https://www.foo.com/test/company/profil-name/ Luego eres redirigido ahttps://www.foo.com/test/company/profil-name/web/online Pero también hay otras cosas como contextos de API: https://www.foo.com/api/profile-name/

Sé que la aplicación actual usa Apache + haproxy en el frontend y el backend:

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

Mi problema es que estoy intentando reproducir la misma configuración aquí, pero el proxy no funciona bien (lo pruebo con un archivo host modificado):

https://www.foo.com/test/company/profil-name/redirige ahttps://www.foo.com/web/test/company/profil-name/online

Es como si la aplicación tomara el contexto inicial como cadena de opción.

Hice alguna combinación en la configuración de haproxy/apache y cuando uso una configuración de proxy inverso simple sin selección de contexto de perfiles, funciona (excepto que solo tengo un perfil...):

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

¿Ya tenías este tipo de comportamiento? Yo uso haproxy 1.8 y apache httpd 2.4.

Así es como se ve mi configuración de 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

Configuración de Apache:

   ProxyRequests On
   ProxyPreserveHost On

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

He pasado horas intentando tener una configuración que funcione, pero todavía no funciona. Espero que alguien pueda ayudarme.

gracias
sebastian

información relacionada