1

我正在尝试找出一种部署我的 RAILS 应用程序(rails 3.2、apache、passenger)的方法。该应用程序有两种不同的通信方式。

  1. 用户像往常一样连接到我们的 https 站点,用于 Rails 应用程序。这是由标准商业 CA 签署的。
  2. 自动化机器连接到我们的站点并使用客户端证书身份验证并检索数据。这一切都由我们自己的 CA 和证书管理。

目前我不考虑平衡,该应用程序将在一台机器上运行。我不能使用 443 上的可选证书检查来组合这两种方法,因为这会影响在同一 apache 实例上运行的其他应用程序,所以我相信我需要两个单独的应用程序端口。

我应该如何管理这个?可以将 apache 配置为通过单独的虚拟主机指向同一个应用程序(可能通过代理到独立的乘客)吗?我是否应该使用一些共享库或引擎将我的应用程序分成两个单独的应用程序?我应该只部署两次指向同一个数据库(这将如何影响缓存)?

有没有比检查客户端证书更好的方法来区分连接端口,如果是这样,假设是自动连接?

我也对让它快速工作的技巧以及构建这样的东西的正确 Rails 方式感兴趣。

谢谢

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 回答