2011-12-18 11 views
2

私は現在、標準のApache仮想ホスト構成で複数のWebサイトを設定しています。複数のOpa Web Appsを1台のサーバーに接続

私の質問は、Opaを使ってビルドされた複数のウェブサイトを、Apache仮想ホストと同じように実行するように設定する方法です。

ex。ユーザーがwww.example1.comを入力すると、サーバーはユーザーをOpaApp1にリダイレクトします。ユーザーがwww.example2.comを入力すると、サーバーはユーザーをOpaApp2にリダイレクトします。

答えて

1

HttpRequest.get_host()で要求されたホストを回復できます。

サンプルアプリ:

OpaApp1 = {{ 
    start(uri) = Resource.html("Hello", <>World 1</>) 
}} 

OpaApp2 = {{ 
    start(uri) = Resource.html("Hello", <>World 2</>) 
}} 

@server 
start(uri:Uri.relative) = 
    match HttpRequest.get_host() 
    {some={some="www.example1.com"}} -> OpaApp1.start(uri) 
    {some={some="www.example2.com"}} -> OpaApp2.start(uri) 
    _ -> Resource.error_page("Error", <>Bad gateway</>, {bad_gateway}) // default 

server = Server.simple_dispatch(start) 
+0

ありがとう、 OpaApp1.opa、OpaApp2.opa、およびSomeRequestRedirectionApp.opaを別々にコンパイルできますか? その後、OpaAppX.opaのWebサイトを追加して、SomeRequestRedirectionApp.opaに少し追加するだけでいいのですか? – BrianTMaurer

+0

これを1つのバイナリにコンパイルする必要はありません。あなたは(すべてのアプリケーション用に)異なるパッケージを作ることができますが、最終的に1つのバイナリに終わる必要があります。 – Fred

+0

それ以外の場合は、さまざまなWebアプリケーションの前で[nginx](http://www.nginx.com/)のようなロードバランサを使用し、それらをnginxで負荷分散することをお勧めします。これは良い解決策です.Opaはマルチスレッドではないので(まだ)、マルチコアプロセッサがあればそれを利用します。 – Fred

0

私は、Apacheの第一人者だありませんが、私はあなたが別のポート(--portスイッチ)上の異なるオーパアプリケーションを実行することができ、その場合には別のポートに異なるドメインを設定することができたとします。これは、1つのグローバルアプリを持つだけでなく、モジュール化されているかもしれません。

関連する問題