Как обслуживать два приложения с разных серверов, использующих один домен - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть приложение Rails, размещенное на Heroku, на котором серверы генерируют страницы для маркетинговых целей.У меня есть другие страницы контента на другом сервере, которые являются статическими страницами.Я хочу оставить их обоих в одном домене, чтобы создать в этом домене добротность.

пример:

domain.com / бла-бла-бла-что-то

должен действительно загрузить страницу из heroku-server-name / blah-blah-blah-что-то, но она выглядит, как будто она с domain.com.

Возможно?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Вы можете запустить сайт с помощью HAProxy и настроить его для переключения контента.Для этого у вас есть интерфейс прослушивания внутреннего IP-адреса, который сопоставлен с вашим внешним IP-адресом.Бэкэнды - это ваши серверы.Вы настраиваете списки контроля доступа, чтобы определить, какой сервер отправлять.Например, это может быть через некоторое имя пути или расширение файла (например, .html идет на сервер A, а .aspx - на другой).В конце концов, пользователь не знает, что он находится на двух разных серверах, потому что он видит сайт, обслуживаемый только на одном доменном имени.

Примечание:
1) Вы не сможете делиться сессиями (что, я уверен, вы уже знаете).

2) HAProxy не обрабатывает https, так что если вам нужен https, у вас должно быть что-то для завершения https, например, nginx, haproxy или stunnel.

Надеюсь, что это применимо, потому что я не знаком с heroku.

0 голосов
/ 08 апреля 2011

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/

Вероятно, при любом запросе, подобном этому, будет низкая производительность, поскольку он будет эффективновозьмите время двух запросов.

...