【问题标题】:How do I serve two apps from different servers using the same domain如何使用同一域为来自不同服务器的两个应用程序提供服务
【发布时间】:2011-04-07 21:54:35
【问题描述】:

我有一个托管在 Heroku 上的 Rails 应用程序,该应用程序服务器为营销/搜索引擎优化目的生成页面。我在另一台服务器上有其他内容页面,它们是静态页面。我想让它们都在同一个域上,以在该域上建立 seo 优势。

示例:

domain.com/blah-blah-blah-something

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

可能吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    2) HAProxy 不处理 https,所以如果您需要 https,那么您必须有一些东西来处理 https 终止,例如 nginx 或 haproxy 或 stunnel。

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

    【讨论】:

      【解决方案2】:

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

      我从这个链接借用了这个代码sn-p:

        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/

      这样的任何请求都可能性能不佳,因为它实际上会占用两个请求的时间。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-22
        • 2019-01-01
        • 1970-01-01
        • 2014-08-11
        • 2014-09-01
        • 1970-01-01
        相关资源
        最近更新 更多