mod_jk에 대한 요청을 통과하고 앱 컨텍스트를 벗기는 Mod_rewrite가 Apache 2 뒤에 Tomcat 5.5를 실행하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/208261

문제

좋아, 그래서 나는 Tomcat (5.5)에서 WebApp을 실행하여 Apache 2 (2.2.3이 정확한) 뒤에서 현장의 루트 (즉, 컨텍스트가없는)에서 서빙하고 Apache를 통해 제공되는 정적 컨텐츠로 실행되기를 원합니다.

따라서 앱이 실행중인 경우 "/myapp"Tomcat에서 나는 아파치를 사용하고 싶습니다 (플러스 mod_rewrite) 마치 실행중인 것처럼 행동하게합니다./" 대신에.

Mod_jk 설정 및 작동 중입니다. "앱에 액세스 할 수 있습니다"/myapp",하지만 마지막 비트가 작동하지 않습니다. 아래는 내가 얻은 구성입니다. mod_rewrite 이 작업을 수행하려고 노력합니다. 올바르게 다시 작성됩니다 /static/ URL은 Apache가 포장되지 않은 WebApp에서 제공 할 수 있도록 제공하고 다시 작성하는 로그를 활성화하면 다른 모든 요청을 통과하려고 시도합니다. /myapp ~을 통해 mod_jk. 그러나 mod_jk는 나중에 요청을 처리하지 않는 것 같습니다.


JkMount /myapp/*      worker1

RewriteEngine On

# ensure static stuff gets served by apache
RewriteRule ^/static/(.*)$ /var/lib/tomcat5.5/webapps/myapp/static/$1 [L]
# everything else should go through tomcat
RewriteRule ^/(.*)$ /myapp/$1 [L,PT]

과거에 Apache 1 으로이 작업을 수행했을 때 나는 확실히 확인해야했습니다. mod_jk 전에로드했습니다 mod_rewrite, 그러나 나는 Apache 2에서 이것을 달성 할 수없는 것 같습니다. 어떤 생각이 있습니까? 다른 사람들은 보통 어떻게합니까?

도움이 되었습니까?

해결책

결국 이것을 작동시킬 수있었습니다. jkoption을 설정 해야하는 것 같습니다.


JkOptions     +ForwardURICompat

그리고 mod_jk 다시 작성한 URL을 살펴 봅니다. 이것이 왜 작동하는지 100% 확신하지 말아야하지만, 나는 그것이 오래된 형태의 행동으로 되돌아 가고 있다고 생각합니다. 누군가 나에게 더 나은/더 올바른 방법을 말할 수 있다면 나는 알고 싶습니다.

다른 팁

mod_jk 대신 프록시에 Apache를 더 잘 사용할 수 있습니다. 이 같은:

proxypass /static / http : // localhost : 8080/myapp/static/

Tomcat Virtual Hosts 또는 다른 호스트에 다른 커넥터를 사용하고 루트 애플리케이션 ( "/")을 배포하고 다른 커넥터 또는 가상 호스트로 전달하는 경우 Apache Mod_jk를 설정하는 경우 발생하는 일이 더 쉬울 수 있습니다.

참고 : 필요할 때 다른 Tomcat 호스트 또는 엔진 (기억할 수 없음)을 위해 다른 커넥터를 사용하고 루트 애플리케이션을 배포했습니다. 나는 Tomcat에서 가상 호스트 (이름 기반)를 시도한 적이 없으며 이것이 효과가 있다고 추측합니다.

혜택 : 경로 변환이 없으므로 초기 배포 후 몇 달 동안 설치를 변경 해야하는 경우 이해하기가 훨씬 쉽습니다.

나는 고백하고 다소 이상하다고 느끼지만 가독성의 이점은 나에게 큰 가치가 있습니다.

우리는 'pt'대신 'r'플래그를 사용합니다.

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

편집하다:사용자가 보는 URL을 변경하지 않는 요점을 놓쳤습니다. 대안적인 방법은 다음과 같습니다.

JkMount /* worker1
JkUnmount /static/* worker1

그러면 다시 쓰레기가 필요하지 않습니다.

그리고에 따르면 Apache Tomcat 사이트 새로운 기본 설정 mod_jk 호환되지 않습니다 mod_rewrite 그리고 당신은 사용해야합니다 +ForwardURICompatUnparsed.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top