Как мне обслуживать два приложения с разных серверов, используя один и тот же домен

#ruby-on-rails #.htaccess #mod-rewrite #seo #heroku

#ruby-on-rails #.htaccess #мод-перезапись #seo #heroku

Вопрос:

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

пример:

domain.com/blah-blah-blah-something

на самом деле должна загружаться страница из heroku-server-name / бла-бла-бла-что-то, но похоже, что это из domain.com .

Возможно?

Ответ №1:

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

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

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

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

Ответ №2:

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/

Любой подобный запрос, скорее всего, будет выполняться с низкой производительностью, поскольку на выполнение двух запросов фактически уйдет время.