내 응용 프로그램은 Tomcat의 ROOT 폴더에 배포되고 프록시를 사용하여 Apache에 연결됩니다. 전임자:-
ProxyPass / ajp://192.168.0.xx:8011/
ProxyPassReverse / ajp://192.168.0.xx:8011/
내가 불 때http://test.com/server-status빈 페이지가 표시되고 access.log에 다음 오류가 발생합니다.
MY IP - - [03/Apr/2014:17:09:48 +0530] "GET /server-status HTTP/1.1" 404 - "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.102 Safari/537.36"
그러나 Tomcat의 다른 디렉터리(예: 테스트)에 애플리케이션을 배포하고 Apache에서 다음 프록시 설정을 사용하는 경우
ProxyPass /Test ajp://192.168.0.xxx:8011/Test
ProxyPassReverse /Test ajp://192.168.0.xxx:8011/Test/
이제 URL을 클릭하면 다음과 같습니다.http://test.com/server-status그런 다음 서버 상태가 포함된 서버 페이지가 표시됩니다.
아래는 내 서버 상태 구성입니다
<Location /server-status>
SetHandler server-status
Order deny,allow
Satisfy any
Allow from all
</Location>
서버 상태를 사용하는 방법과 Tomcat에서 ROOT로 애플리케이션을 배포하는 방법을 알려주세요.
답변1
이 /server-status
페이지는 Tomcat이 아닌 Apache의 기능입니다. ProxyPass
URL의 최상위 수준에서 규칙을 설정 하면 /
모든 트래픽(포함 /server-status
)이 페이지를 제공하지 않는 Tomcat 서버로 전달되므로 /server-status
Apache는 404를 보고합니다.
당신은 아파치에게 말할 수 있습니다아니요/server-status
다음과 같이 규칙을 추가하여 바인딩된 트래픽을 프록시합니다.
ProxyPass /server-status !
ProxyPass /Test ajp://192.168.0.xxx:8011/Test
ProxyPassReverse /Test ajp://192.168.0.xxx:8011/Test/
공식 Apache 문서에서 이 기능에 대한 자세한 내용을 읽을 수 있습니다.
이것! 지시어는 하위 디렉터리를 역방향 프록시하고 싶지 않은 상황에 유용합니다.
인용하다
답변2
위치 섹션에 "ProxyPass!"를 추가할 수 있습니다. 결과는 다음과 같습니다.
<Location /server-status>
ProxyPass !
SetHandler server-status
Order deny,allow
Satisfy any
Allow from all
</Location>