2010-03-28 5 views
2

Heyas. mod_proxy를 apache2와 함께 사용하면 로컬 컴퓨터에서 실행되는 여러 서블릿 응용 프로그램에 vhost 기능을 제공 할 수 있습니다. 대부분 잘 작동합니다. 요청은 아파치에 들어간 다음 localhost의 포트에 바인딩 된 애플리케이션으로 전달됩니다. 앱은 요청을 받고 응답하며, 아파치에 의해 클라이언트에게 전달됩니다.아파치 mod_proxy를 사용할 때 응용 프로그램 오류 패스 스루

내가 겪고있는 문제는 응용 프로그램이 오류 발생시 500 개를 제공하고 mod_proxy가 오류를 일으킨다는 것입니다. 종종 이러한 오류는 ajax 요청으로 인해 발생하며 오류는 클라이언트 측 javascript에서 처리됩니다. 예를 들어, 서버 측 createObject (name)에 대한 호출은 NameNotUniqueException을 던질 수 있으며, 이는 500으로 다시 전달됩니다. 클라이언트 자바 스크립트는 적절한 오류 메시지를 표시 할 수 있습니다.

오류가 (mod_proxy이 할 수있는 500 응답 결과) 응용 프로그램에 의해 발생합니다

후 아파치는 오류 메시지가 굴러와

500 내부 서버 오류

내부 서버 오류

을 반환

서버에서 내부 오류 또는 구성 오류가 발생하여 요청을 완료하지 못했습니다.

.. 재고 아파치 서버 측 오류 메시지.

mod_proxy를 사용하여 원래 500을 다시 클라이언트로 전달하고 싶습니다. 내가 놓친 지시어가 500의 파손을 방지합니까?

TIA

+0

mod_proxy_ajp 또는 mod_jk를 사용하는 것은 어떻습니까? 아파치를 서블릿에 연결하는 데 더 적합하다고 생각됩니다. –

+0

좋은 제안. 이 응용 프로그램은 독립형 부두 구동 dyn 웹 엔진입니다. 아마 나는 부두 ajp 연결을 봐야한다. –

+0

흠, mod_proxy가 선호되는 방법 인 것 같습니다 (http://docs.codehaus.org/display/JETTY/Configuring+AJP13+Using+mod_jk). 따라서, 나는이 문제에 대한 해결책을 찾지 못해 놀랐다. –

답변

2

당신이 backend.ip를 교체

ProxyRequests Off 
ProxyErrorOverride Off 
ProxyPass /path/ http://backend.ip/path/ 
ProxyPassReverse/http://backend.domain/ 

을 가지고 당신의 가치 (내가 여기에 각 요청에서 실행되는 DNS 쿼리에서 아파치를 방지로 backend.ip 사용하고있다)와 backend.domain 수행 .

일반적으로 오류는있는 그대로보고됩니다. ProxyErrorOverride는 기본적으로 off이기 때문입니다. 이 구성이 제 구성으로 발생하지 않으면 500이 실제로 백엔드 서버에 있는지 확인하십시오. 또는 전체 프록시 구성을 표시하십시오.

관련 문제