1

RAILS アプリ (Rails 3.2、Apache、Passenger) をデプロイする方法を見つけようとしています。アプリには 2 つの異なる通信手段があります。

  1. ユーザーは、通常の Rails アプリと同様に https サイトに接続します。これは、標準の商用 CA によって署名されています。
  2. 自動化されたマシンが当社のサイトに接続し、クライアント証明書認証を使用してデータを取得します。これはすべて、独自の CA と証明書によって管理されます。

現時点ではバランス調整は考えていません。アプリは 1 台のマシンで実行されます。443 でオプションの証明書チェックを使用して 2 つの方法を組み合わせることはできません。これは、同じ apache インスタンスで実行されている他のアプリに影響を与えるためです。そのため、アプリには 2 つの個別のポートが必要だと思います。

これを管理するにはどうすればよいですか?別の vhosts を介して同じアプリケーションを指すように apache を構成できますか (おそらくパッセンジャー スタンドアロンへのプロキシを介して)? いくつかの共有ライブラリまたはエンジンを使用して、アプリケーションを 2 つの別個のアプリケーションに分割する必要がありますか? 同じ DB を指すように 2 回デプロイする必要がありますか (これはキャッシュにどのように影響しますか)?

クライアント証明書をチェックするよりも、接続ポートを区別するためのより良い方法はありますか?もしそうなら、自動接続を想定していますか?

また、このようなものを構築するための正しいレールの方法と同様に、それをすばやく動作させるためのハックにも興味があります。

ありがとう

4

1 に答える 1

0

Rails アプリで、リクエスト タイプに応じた条件付きの動作が必要な場合は、次のような小さなヘルパー メソッドを追加できます。

class ApplicationController < ActionController::Base
  def api_request?
    request.port == 443
  end
end

次に、他のコントローラーで:

class UserController < ApplicationController 
  def index
    @users = User.all
    if api_request?
      render :json => @users.to_json
    else
      render :action => :index
    end
  end
end
于 2012-06-20T03:49:33.063 に答える