2012-10-30 6 views
7

PrimeFaces로 응용 프로그램을 빌드하고이를 Apache 역방향 프록시 뒤에 실행하려고합니다.하위 도메인에서 역방향 프록시를 사용하여 PrimeFaces를 실행하는 방법은 무엇입니까?

내 대상 URL은 http://myserverurl.org:8080/myapplication/입니다.

http://myapplication.myserverurl.org과 같은 하위 도메인을 통해 애플리케이션에 액세스하려고합니다.

나는 아파치에서 가상 호스트를 구성 : 안 잘 작동

<VirtualHost *:80> 
    ServerName myapplication.myserverurl.org 
    ProxyPass/http://myserverurl.org:8080/myapplication/ 
    ProxyPassReverse/http://myserverurl.org:8080/myapplication/ 
</VirtualHost> 

합니다. JSF 페이지를 볼 수는 있지만 CSS가 적용되지 않습니다. 첫 번째 요청은 올바르게 리디렉션되었지만 jQuery, CSS 등을로드하는 다음 요청은 그렇지 않습니다.

그들은 분명히 틀린 http://myapplication.myserverurl.org/myapplication/faces/javax.faces.resource/primefaces.js?ln=primefaces과 같은 URL에 액세스하려고합니다. 프록시가 이미 해당 경로로 재전송하기 때문에 경로에 /myapplication/ 경로를 다시 포함하면 안됩니다.

이 문제를 어떻게 해결할 수 있습니까? PrimeFaces 문제입니까 아니면 역방향 프록시 구성 문제입니까?

답변

0

응용 프로그램 서버에 따라 다를 수 있지만 주로 프록시에 AJP를 사용해야합니다.
첫 단계는 OS에 따라 ajp 모듈을 활성화하는 것입니다. 우분투는 이렇게 보입니다. 3 응용 프로그램 서버에서 활성화하는 것입니다

ProxyPass/ajp://localhost:8009/myapplication 
ProxyPassReverse/ajp://localhost:8009/myapplication 

단계 :

sudo a2enmod proxy proxy_ajp 

2 단계, 같은에 아파치의 conf에 프록시 정의를 변경합니다. 다시 말하지만, 사용하는 방법에 따라 다릅니다. Tomcat에는 server.xml에 주석 처리 된 섹션이 있습니다. Glassfish는 관리 콘솔에있는 확인란과 asadmin 명령을 가지고 있습니다 (그러나 기억이 안납니다).

4

AJP를 사용하면이 특정 문제를 해결할 수 있습니다.

Primefaces는 내부적으로 컨텍스트 경로 변수를 사용하여 CSS 및 Javascript 리소스를 포함합니다. 심지어 AJP를 사용하여 당신과 함께 종료됩니다 :

/unwantedAppContext/javax.faces.resource/jquery/jquery.js.jsf?ln=primefaces

이 처리하는 다른 프록시 패스를 추가 해결하기 위해 무엇을 할 수 있는지 원치 않는 문맥. 이것은 최상의 해결책은 아니지만 작동합니다.

<VirtualHost *:80> 

    ServerName myapplication.myserverurl.org 

    ProxyPass /myapplication/ http://myserverurl.org:8080/myapplication/ 
    ProxyPassReverse /myapplication/ http://myserverurl.org:8080/myapplication/ 

    ProxyPass/http://myserverurl.org:8080/myapplication/ 
    ProxyPassReverse/http://myserverurl.org:8080/myapplication/ 
</VirtualHost> 

전달 순서가 중요합니다.

이 문제

http://www.icesoft.org/JForum/posts/list/4433.page#sthash.h1qSqiYg.dpbs

0

이 mod_proxy_html 모듈에서 ProxyHTMLURLMap 지시어를 사용하여 고려 icefaces 포럼에서보고되었다. 이 모듈은 출력 HTML 링크가 올바른 위치를 가리 키도록 조작합니다. 귀하의 경우에는 http://myapplication.myserverurl.org/ 필요성을 말해 모든 링크는 다시 /로 변경하는 즉

ProxyHTMLURLMap http://myapplication.myserverurl.org//

당신이 잘못된 위치를 가리키는 모든 콜백 링크를 수정할 수 있습니다이 방법.그래픽에 대한

+0

이 HTML 링크에 대한 작동하지만, 일부 링크는 클라이언트 측 JS와'홍보를 통해 생성된다 oxyHTMLURLMap'은이를 수정하지 않습니다. – liadmat

0

jjhavokk 작품의 대답하지만 당신이 웹 애플리케이션에 request.contextPath를 통해

<img src="#{request.contextPath}/resources/yourfolder/yourpng.png" /> 

장소를을 참조 할 필요가/내 .css 파일로 자원/yourfolder/yourpng.png 이 필요하지 않은 웹 애플리케이션/자원/CSS에서

h:outputStylesheet name="css/screen.css" 

관련 문제