Ruby on rails 同一rails应用程序的多个端口

Ruby on rails 同一rails应用程序的多个端口,ruby-on-rails,apache,passenger,Ruby On Rails,Apache,Passenger,我正试图找到一种部署RAILS应用程序(RAILS 3.2、apache、passenger)的方法。该应用程序有两种不同的通信方式 用户像rails应用程序一样连接到我们的https站点。这是由标准的商业CA签署的 自动机器连接到我们的站点,并使用客户端证书身份验证和检索数据。这一切都由我们自己的CA和证书管理 目前我不考虑平衡,该应用程序将在一台机器上运行。 我无法在443上使用可选的证书检查来组合这两种方法,因为这会影响在同一apache实例上运行的其他应用程序,因此我认为我需要为该应用程

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

  • 用户像rails应用程序一样连接到我们的https站点。这是由标准的商业CA签署的
  • 自动机器连接到我们的站点,并使用客户端证书身份验证和检索数据。这一切都由我们自己的CA和证书管理 目前我不考虑平衡,该应用程序将在一台机器上运行。 我无法在443上使用可选的证书检查来组合这两种方法,因为这会影响在同一apache实例上运行的其他应用程序,因此我认为我需要为该应用程序提供两个单独的端口

    我应该如何着手管理这件事?是否可以将apache配置为通过单独的vhost(可能通过代理到独立的应用程序)指向同一应用程序?我应该把我的应用程序分成两个独立的应用程序,并使用一些共享库或引擎吗?我是否应该部署两次指向同一个DB(这会如何影响缓存)

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

    我还对这两种方法感兴趣,一种是让它快速工作,另一种是正确的rails方式来构建类似的东西


    感谢您的rails应用程序中的,如果您希望在请求类型上设置行为条件,您可以添加一个类似以下内容的小助手方法:

    class ApplicationController < ActionController::Base
      def api_request?
        request.port == 443
      end
    end
    
    class ApplicationController
    然后在其他控制器中:

    class UserController < ApplicationController 
      def index
        @users = User.all
        if api_request?
          render :json => @users.to_json
        else
          render :action => :index
        end
      end
    end
    
    class UserController@users.to_json
    其他的
    呈现:操作=>:索引
    结束
    结束
    结束
    
    您不能只使用不同的域,然后使用vhost将它们分开吗?不同的域与在不同端口上使用相同的域并使用不同的vhost几乎是一样的。问题不在于如何设置端口,而在于如何设置passenger和rails,以便为同一基础应用程序使用不同的端口。嗯,有趣的是,由于passenger使用vhost的应用程序,我不确定这是否可行。你能转移到不同的web服务器设置,如passenger->unicorn(甚至是nginx->unicorn)吗?不太可能。特别是出于浏览目的,我们需要集成到一个apache实例中,该实例运行许多其他我们无法控制的东西。也许我们可以将apache端口反向代理到另一台服务器,但我认为管理员不会高兴。就问题的目的而言,我没有。太好了,我以为在请求中的某个地方会有通往港口的通道。虽然没有被接受,但我仍然在寻找一个人来回答更大的设置问题。