如何使用同一域从不同服务器提供两个应用程序

时间:2011-04-07 21:54:36

标签: ruby-on-rails .htaccess mod-rewrite seo heroku

我在Heroku上托管了一个Rails应用程序,服务器生成用于营销/搜索目的的页面。我在另一台服务器上有其他内容页面,它们是静态页面。我希望将它们保存在同一个域中,以便在该域上构建seo良好。

示例:

domain.com/blah-blah-blah-something

应该真的从heroku-server-name / blah-blah-blah-something加载一个页面,但它看起来像来自domain.com。

可能的?

2 个答案:

答案 0 :(得分:2)

您可以使用HAProxy将站点置于前面,并将其配置为进行内容切换。要执行此操作,您可以使用前端侦听映射到外部IP的某个内部IP地址。后端是您的服务器。您设置访问控制列表以确定要发送到哪个后端。例如,这可以通过一些路径名或文件扩展名(例如.html转到服务器A而.aspx转到另一个)。最后,用户不知道他们在两个单独的服务器上,因为他们只看到在一个域名上提供的站点。

注意:
1)您将无法分享会话(我相信您已经知道了)。

2)HAProxy不处理https,因此如果您需要https,那么您将需要处理https终止,例如nginx或haproxy或stunnel。

希望这是适用的,因为我不熟悉heroku。

答案 1 :(得分:0)

域的DNS记录只能指向一个IP地址(以及服务器)。您可以通过有效地获取站点并显示它来配置基于Heroku的应用程序以从其他服务器呈现内容。

我从这个链接借用了这段代码:

  def fetch_url(url)
    r = Net::HTTP.get_response( URI.parse( url ) )
    if r.is_a? Net::HTTPSuccess
      r.body
    else
      nil
    end
  end

  # use like this from your controller
  @snippet = fetch_url "http://www.oreilly.com/"

  # and in your page <%= @snippet %>

http://answers.oreilly.com/topic/1052-ruby-on-rails-how-does-one-render-html-from-another-web-server-to-a-ruby-on-rails-app/

对于这样的任何请求,性能可能会很差,因为它会有效地占用两个请求的时间。