2010-12-12 1 views
1

나는 톰캣에서 MyApp를/나의 개찰구 응용 프로그램을 배포 한, 나는어떻게 잘못된 리디렉션에/MyApp를/XXX 대신/xxx는의를 보낼에서/myapp와의 비하인드 아파치 프록시에서 (에서 개찰구) Tomcat을/수정하기?

ProxyPass/http://localhost:8080/myapp/ 
ProxyPassReverse/http://localhost:8080/myapp/ 

지금 개찰구 잘못 사용자/MyApp를/XXX 대신/xxx를 리디렉션 사용하여 아파치 웹 서버 뒤에 넣어했다.

개찰구 (1.3.5) 사용/내 루트 경로로 만들 수있는 방법이 있나요 (대신이/서블릿 배포 컨텍스트 경로입니다 MyApp를)!

편집 :이 다음 링크에서 설명 된 솔루션입니다하지만 1.3.5 버전하지 작업을 수행합니다 나는 그것을 발견 : https://cwiki.apache.org/WICKET/wicket-behind-a-front-end-proxy.html

편집 : 문제는 개찰구가 상대 경로를 사용하는이 ServletResponse를 번호로 리디렉션입니다 sendRedirect와 Tomcat은 시작시/myapp가 포함 된 절대 경로로 변환합니다. mod_jk (AJP)를 시도했지만 아무런 차이가 없었습니다!

클라이언트로 보내기 전에 리디렉션을 다시 작성하는 프록시 패스 또는 모드 - JK를 알 수있는 방법이 있어야합니다!

답변

0

: 프록시 패스를 들어

는 세 번째 줄은 교체해야

http://tomcat.apache.org/connectors-doc/generic_howto/proxy.html

그것은 RedirectMatch에와 mod_rewrite를 가진 위의 상황을 해결합니다.

+0

해당 페이지의 다음 섹션에서 해결책을 찾을 수 있습니다. 2. mod_headers를 사용하여 응용 프로그램이 반환 할 수있는 HTTP 리디렉션을 다시 작성합니다. ... 헤더 편집 위치^([^ /] * // [^ /] *)?/(. *) $ $ 1/myapp/$ 2 –

0

자신을 테스트하지,하지만 당신은 mod_rewrite를 살펴 보았다? 원하는 것을 설명하는 몇 가지 예가 here입니다.

+0

예,하지만 난 리디렉션을 재 작성, 또는 얼마나 제대로 상대 리디렉션 URL을 변환하는 방법을 바람둥이 이야기하는 방법을 알아낼하지 않았다. –

1

내가 직접 답을 찾을 모드 JK와 해결 방법 다음 사용하지 않았다, 나는 프록시 패스 할 수도 있습니다 같아요.

RewriteRule   /myapp/(.*)  /$1 [L,R] 
RewriteRule   ^(.*)   /myapp$1 [PT] 
JkMount    /myapp/*   ajp13_worker 

첫 번째 줄 요청이 시작 클라이언트에서 오는 리디렉션와/MyApp를/* (잘못된 개찰구는/톰캣/아파치 리디렉션의 결과있는)/*에.

두 번째 줄 은/*/myapp/*의 모든 요청을으로 다시 쓰고 세 번째 줄은 tomcat으로 보냅니다. 당신은 도움이 톰캣 문서를 찾을 수 있습니다

ProxyPass    /myapp/   http://localhost:8080/myapp/ 
ProxyPassReverse  /myapp/   http://localhost:8080/myapp/