2011-10-26 6 views
0

私はいくつかのWebアプリケーションを実行しているCentOSボックスを持っており、Apacheを使用してさまざまなアプリケーションへの要求をプロキシしています。私は働くことができないようなErlang Nitrogenのアプリケーションを除いて、すべて動作しています。Erlang NitrogenでApache mod-proxyを使用する

私は標準的な方法でNitrogenアプリを実行しています。マシン上でhttp://localhost:8000にローカルでアクセスできます。私はwgetを使ってこれを確認しました。ここで

は、私が使用しようとしていますApacheの設定ファイルである:

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/ 

この設定は、他のアプリケーションは、そののルートに展開されていないことを除いて、システム上の他のすべての成功した作業のプロキシに似ています窒素のようなサーバーはやっているようだ。

その結果、基本ページはWebブラウザに正しくダウンロードされていますが、付随するすべてのリソースは正しくダウンロードされていません。これは私にjavascriptが正しく機能しない非スタイルのページを提供します。ここで

は、Apacheからのログです:

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 

私は私のプロキシとしてApacheを使用するためのハード要件を持っている - 私はちょうどこの窒素アプリケーションの作業を取得するために他のすべてのアプリケーションをリセットするつもりはありません。ファイアウォールでポート8000​​を開くことも問題になりません。

残りのアプリケーションに影響を与えない限り、Apacheモジュール(mod-rewriteなど)またはApache設定を使用することはできます。また、Nitrogenアプリケーションの設定を変更して、Apacheでよりうまく動作するようにすることもできます。

どのように私の窒素アプリケーションのプロキシ/リバースプロキシにApacheを使用できますか?

答えて

0

問題点は、ProxyPassはApacheへのリクエストとして入ってくるリンクだけをキャプチャすることです。何がうまくいかなかったのは、htmlページのリンクがリクエストできなかったリソースを指していて、ProxyPassがそれらを傍受して正しくルーティングできなかったことです。この問題はdocumented hereです。特に「HTMLリンクの修正」を参照してください。

Apacheにmod_proxy_htmlをインストールする必要がありました(CentOSのRPMがないので、上記の説明のようにapxsを使用する必要がありました)。その後、問題を引き起こしていたリソースにProxyHTMLLinksを追加し、マッピングを説明するProxyHTMLURLMapディレクティブを追加する必要がありました。これは文字通りないことはhtmlファイル切片で、挿入/アーラン/すべてのURLの前に

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> 

:ここ

は私の新しい設定ファイルです。私は私のブラウザでショーページのソース機能を使用するとき、私はこの結果を見ることができます。

0

Apacheサーバーでこれらのファイルにアクセスすることはできますか?最初のアドレスにはHTTP 200が、残りには404が表示されているようです。正しい場所を指していることを確認してください。 :)

1

問題:私はYaws wikiをセットアップしました。 http:// wiki:8080のように動作していました。しかし、私はこのように(apacheを使って)作業したかった:http:// wiki。ローカル/

ソリューション:ここ

私のApacheの設定イチゴ腫のWikiのための(の/ etc/apacheの/サイト利用可能/ウィキ):

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

私のyawsウィキ設定(の/ etc /イチゴ腫/ confに.avail /のyaws-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 

私は、Apacheのためにこれらの改造を有効にしている:

sudo a2enmod proxy 
sudo a2enmod proxy_http 

を今のhttp:perfecly作品//wiki.local/。