2011-10-26 2 views
0

여러 웹 응용 프로그램을 실행하는 CentOS 상자가 있고 다양한 응용 프로그램에 프록시 요청을하기 위해 Apache를 사용합니다. 내가 일하는 것 같지 않은 Erlang Nitrogen 어플리케이션을 제외하고는 모두 작동하고있다.Erlang Nitrogen과 함께 Apache mod-proxy 사용

나는 표준 방식으로 Nitrogen 앱을 실행 중이며 기기에서 로컬로 http://localhost:8000에 액세스 할 수 있습니다. wget을 사용하여이를 확인했습니다. 여기

내가 사용하려고 아파치 구성 파일입니다

ProxyRequests Off 
ProxyPreserveHost On 

<Proxy http://my-ip:8000/*> 
    Order deny,allow 
    Allow from all 
</Proxy> 

ProxyPass /erlang http://my-ip:8000/ 
ProxyPassReverse /erlang http://my-ip:8000/ 
ProxyPassReverse /erlang http://my-ip/ 

이 설정은 다른 응용 프로그램의 루트에 배포하지 않는 것을 제외하고는 시스템의 다른 모든 성공적으로 작업 프록시와 유사하다 자신의 질소와 같은 서버가하는 것처럼 보입니다.

결과적으로 기본 페이지가 웹 브라우저에 올바르게 다운로드되지만 첨부 된 모든 리소스는 제대로 다운로드되지 않습니다. 이 자바 스크립트가 제대로 작동하지 않는 스타일이 아닌 페이지를 제공합니다. 여기

아파치의 로그입니다 :

x.x.x.x - - [timestamp] "GET /erlang HTTP/1.1" 200 2884 
x.x.x.x - - [timestamp] "GET /nitrogen/jquery.js HTTP/1.1" 404 484 
x.x.x.x - - [timestamp] "GET /nitrogen/jquery-ui.js HTTP/1.1" 404 484 
x.x.x.x - - [timestamp] "GET /nitrogen/livevalidation.js HTTP/1.1" 404 484 
x.x.x.x - - [timestamp] "GET /nitrogen/nitrogen.js HTTP/1.1" 404 484 
x.x.x.x - - [timestamp] "GET /nitrogen/bert.js HTTP/1.1" 404 484 
x.x.x.x - - [timestamp] "GET /nitrogen/jquery-ui/jquery.ui.all.css HTTP/1.1" 404 484 
x.x.x.x - - [timestamp] "GET /nitrogen/nitrogen.css HTTP/1.1" 404 484 
x.x.x.x - - [timestamp] "GET /css/style.css HTTP/1.1" 404 484 

내 프록시로 아파치를 사용하기 힘든 요구 사항이 - 난 그냥이 질소 응용 프로그램의 작동을 얻기 위해 다른 모든 응용 프로그램을 다시하지 않을거야. 방화벽에서 8000 번 포트를 여는 것도 문제가되지 않습니다.

나머지 응용 프로그램에는 영향을주지 않는 한 아파치 모듈 (mod-rewrite 등)이나 아파치 설정을 사용하고 있습니다. 또한 Nitrogen 애플리케이션의 모든 설정을 변경하여 Apache에서 더 잘 작동하도록 할 수 있습니다.

내 질소 응용 프로그램에 대해 Apache를 프록시/역방향 프록시로 사용하려면 어떻게해야합니까?

답변

0

ProxyPass는 Apache에 대한 요청으로 들어오는 링크 만 캡처합니다. html 페이지의 링크가 요청할 수없는 리소스를 가리키고 있으며 ProxyPass가이를 가로 채고 올바로 라우팅 할 수 없었던 점이 잘못되었습니다. 이 문제는 documented here입니다. 특히 "HTML 링크 수정"을 참조하십시오.

아파치에 mod_proxy_html을 설치해야만했습니다 (CentOS 용 RPM이 없으므로 위의 문서와 같이 apxs를 사용해야했습니다). 그 후 필자는 문제를 일으키는 리소스에 ProxyHTMLLinks를 추가하고 ProxyHTMLURLMap 지시문을 추가하여 매핑을 설명해야했습니다.

ProxyRequests Off 
ProxyPreserveHost On 

<Proxy http://my-ip:8000/*> 
    Order deny,allow 
    Allow from all 
</Proxy> 

ProxyPass /erlang http://my-ip:8000/ 
ProxyHTMLURLMap http://my-ip:8000 /erlang 

ProxyHTMLLinks link   href 
ProxyHTMLLinks script   src for 

<Location /erlang> 
    ProxyPassReverse http://my-ip:8000/ 
    SetOutputFilter proxy-html 
    ProxyHTMLExtended On 
    ProxyHTMLURLMap//erlang/ 
    RequestHeader unset Accept-Encoding 
</Location> 

이것이 그대로 수행하면 HTML 파일 절편 및 모든 URL의 앞/얼랑를 삽입/:

은 여기 내 새 구성 파일입니다. 내 브라우저에서 쇼 페이지 소스 기능을 사용하면이 결과를 볼 수 있습니다.

0

Apache 서버에서 해당 파일에 액세스 할 수 있습니까? 첫 번째 주소에는 HTTP 200이 있고 나머지 주소에는 404가있는 것 같습니다. 올바른 위치를 가리키고 있는지 확인하십시오. :)

1

문제점 : Yaws 위키를 설정했습니다. 그것은 http : // wiki : 8080처럼 일하고있었습니다. 그러나 나는 아파치를 사용하여 이런 식으로 일하고 싶었다 : http : // wiki.지역/

솔루션 :

여기

딸기 종 위키 내 아파치 설정 (/ 등/아파치/사이트-가능/위키) :

<VirtualHost *:80> 
    ServerName wiki.local 
    ProxyRequests Off 
    <Proxy *> 
    Order deny,allow 
    Allow from all 
    </Proxy> 
    ProxyPass/http://wiki:8080/ 
    ProxyPassReverse/http://wiki:8080/ 
</VirtualHost> 

내 딸기 종 위키 설정 (을/etc/딸기 종은/conf의 .avail/딸기 종-wiki.conf) :

ebin_dir = /usr/lib/yaws/wiki/ebin 
<server wiki> 
port = 8080 
listen = 0.0.0.0 
docroot = /var/lib/yaws-wiki 
</server> 

내/etc/hosts 파일 :

127.0.0.1 wiki 
127.0.0.1 wiki.local 
,691 363,210

나는 아파치 이러한 개조를 활성화 :

sudo a2enmod proxy 
sudo a2enmod proxy_http 

이제 HTTP : perfecly 작동 //wiki.local/합니다.