2011-06-25 11 views
7

ポート80でApacheアプリケーション経由でPHPアプリケーションが提供されています。ポート3000でスタンドアロンで実行されているnodejsアプリケーションがあります。PHPがnodejsアプリケーションに生成したクライアント側コードからajaxリクエストを作成します。問題は同じ発信元ポリシーが別のポートを許可しないので、ポート80でnodejsとapacheの両方を実行できません。nodejsアプリケーションのエイリアスを設定するApacheを設定しますか?

私は理想的にはポート80クライアントの視点からどのようにして、nodejsアプリケーションに対して何らかの要求を再ルーティング/エイリアス/するためにApacheを設定できますか?

希望は意味があります。注:これが可能かどうか、または私が正しい方法でそれについて考えているかどうかはわかりません。

+0

ノードの負荷分散ノードがボトルネックを作成するのは簡単です。単にnginxを使ってnode.jsへのリクエストを転送してください(あるいは、\ o /にノードのPHPアプリケーションを書き直してください) – Raynos

+1

[nodejsとnginx](http://stackoverflow.com/questions/5009324/node-js- nginx-and-now) – Raynos

+0

あなたはどちらも正しいと思います。 nginxは行く方法のように思えますし、ノードのアプリケーションを書き直したいですが、時間は貴重です! – Finbarr

答えて

8

リバースプロキシで行うことができます。 mod_proxyを追加し、localhostのポート3000にプロキシするために、vhostファイルのメインドメイン下の場所を設定します。基本的には次のようになります。

<VirtualHost *:80> 
ServerName example.com 
<Location /api> 
    ProxyPass /api http://localhost:3000/ 
    ProxyPassReverse /api http://localhost:3000/ 
</Location> 
</VirtualHost> 
+0

私はRaynosのソリューションを使いましたが、効率的ではありませんが、これもうまくいっていました。 – Finbarr

+1

このリンクをhttp://blog.ngarua.com/?p=112 に追加したい場合は、リンク内の設定を使用して、Apacheが静的ファイルを提供し、nodejsサーバーが実際のアプリケーションリクエストを処理できるようにします。 – memical

+2

エラーが発生しました:ProxyPass | ProxyPassMatchは、ある場所に定義されているとパスを持つことができません。上記を適用するとき! – moderns

関連する問題