
현재 컨텍스트를 사용하여 "프로필"(앱 속성 및 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/profile-name/
현재 애플리케이션이 프런트엔드와 백엔드에서 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
아파치 구성:
ProxyRequests On
ProxyPreserveHost On
<Location /test/company/app1/>
ProxyPass http://localhost:80/
ProxyPassReverse http://localhost:80/
</Location>
작동하는 구성을 갖기 위해 몇 시간을 보냈지만 여전히 작동하지 않습니다. 누군가가 나를 도울 수 있기를 바랍니다.
고마워요,
세바스찬