나는 다음과 같은 요구 사항을- 동적 컨텍스트는
- 여러 JAR 파일이 있습니다. 각각 임베디드 부두가 있습니다.
- 리버스 프록시 (Apache)를 사용하여 동일한 도메인/포트에서 모두 실행
- JAR은 여러 컴퓨터가 (동일한 호스트/포트 아래에서) 다른 컴퓨터에서 실행될 수 있습니다.
- 완전한 세션 분리 - 동일한 웹 응용 프로그램의 두 인스턴스간에 절대적으로 공유되지 않습니다.
- 이 모든 것을 동적으로 조정하십시오.
- 관련성이 있는지는 잘 모르지만 스프링 보안이 일부 웹 앱에서 사용되고 있음을 알고 있습니다.
역방향 프록시 규칙을 추가하고 Apache를 다시 시작하여 모든 것이 실행되고 있습니다. 다음은 webapp-1의 인스턴스 2 개와 webapp-2의 인스턴스 2 개에 대한 간략한 설명입니다.
http://mydomain.com/app1 ==> 1.1.1.1:9099
http://mydomain.com/app2 ==> 1.1.1.1:9100
http://mydomain.com/app3 ==> 1.1.1.2:9099
http://mydomain.com/app4 ==> 1.1.1.2:9100
성공적으로 설정하면 (거의) JSESSIONID 쿠키에 문제가 발생합니다. 모든 앱이 다른 쿠키를 무시합니다. 즉, 다른 세션에 영향을 미치므로 전체 세션 분리를 달성하지 못했습니다.
온라인으로이 문제에 관해 많이 읽었지 만, 내 시나리오에서는 해결책이 충분하지 않습니다.
나를위한 이상적인 해결책은 쿠키 이름에 대해 일종의 UUID를 사용하도록 JETTY를 정의하는 것입니다. 나는 이것이 왜 디폴트가 아닌지 아직도 알 수 없다.
자바 스크립트 솔루션을 사용해도됩니다. JavaScript에는 ReverseProxy 조작 후 URL을 볼 수있는 이점이 있습니다. 따라서 http://mydomain.com/XXX
에 대해서는 쿠키 이름을 XXX_JSESSIONID
으로 정의 할 수 있습니다.
그러나 나는 이것들에 관한 하우투를 발견 할 수 없다.
어떻게 해결할 수 있으며 세션을 완전히 분리 할 수 있습니까?
세션 관리에 무엇을 사용하고 있습니까? 부두의 JDBC 세션, 기본 해시 세션 관리자, mongo ... 사용자 정의 하나? 내가 아는 한 –
기본값.브라우저에서 JSESSIONID 쿠키를 볼 수 있습니다. DB를 전혀 사용할 수 없습니다. 나는 커스텀 세션 매니저를 작성하지 않았다. –