2012-09-02 3 views
0

리버스 프록시 뒤에있는 JSP 페이지를 다음과 같이 생각하십시오.jsp 프록시를 통해 외부 URL을 학습하십시오.

전자는 link을 재 작성하기 위해 mod_proxy_html을 사용하여 해결할 수 있지만 스크립트 요소에서는 맞춤법 검사를 수행하지 않습니다. via -D를 통해 올바른 URL을 전달하고 pageContext.request.contextPath를 재정의하는 것보다 더 좋은 해결책이 있습니까?

http://internalhost.com에 도달 톰캣의 사본을 고려하고 http://externalhost.com에서 공용 인터넷에 연결할 수 아파치의 사본 :
<link rel="stylesheet" 
    href="${pageContext.request.contextPath}/services/legendcss/legend.css?version=2" 
    type="text/css"/> 


<script> 
    var bt_wd40_appurl = "${pageContext.request.contextPath}/services"; 
</script> 

아마도 명확합니다.

Apache 인스턴스의 구성에는 http://externalhost.com/blue/green/에서 http://internalhost.com/yellow으로 매핑되는 역방향 프록시가 포함되어 있습니다.

'노란색'에 앉아있는 것은 웹 응용 프로그램이며, 노란색 웹 응용 프로그램 내부에서도 웹 서비스와 통신해야하는 자바 스크립트가 포함 된 웹 페이지로 구성됩니다. 우리는 이러한 것들에 경로 이름을 굽고 싶지 않습니다. 위의 코드는 '내부 호스트'URL을 브라우저에 전달하며 브라우저와 통신 할 수 없습니다. '외부 호스트'URL을 제공해야합니다.

JSP 또는 HTML에 배포 된 URL에 대한 가정을 만드는 코드는 사용하지 않는 편이 좋으며 프록시는 말할 것도 없습니다.

+0

프록시가 배포와 다른 컨텍스트에서 페이지를 제공하고 있습니까? 조금 더 나은 질문을 이해하려고 노력합니다. –

+0

보안 및 cetra 때문에 apache2 사본이 여기 저기에있는 Tomcat 사본을 가리키며 '가리키는'은 '역방향 프록시가 구성되었습니다'라는 의미입니다. 그래서 page.request ...는 '저쪽에'있지만 브라우저는 '여기에'와 대화하라는 말을해야합니다. – bmargulies

+0

컨텍스트가 동일하면 컨텍스트 경로를 다시 작성해야하는 이유는 무엇입니까? 단지 '태그를 사용하고 컨텍스트를 완전히 무시하십시오. 어쩌면 내가 뭔가를 놓친 것 같아. –

답변

0

고려할 때, 웹 서비스의 상대 URL은 가장 나쁜 대안으로 보입니다. 따라서 EL 표현식은 모두 사라지고 URL은 프록시의 양쪽에서 올바르게 작동합니다. JSP 페이지와 웹 서비스간에 일정한 경로 관계가 필요하지만 이는 지불 할 작은 가격입니다.

관련 문제