Приложение Rails3 за прокси

Я пытаюсь настроить приложение Rails 3 за веб-сервером Apache2, который является выступая в качестве доверенного лица. Веб-сервер Apache работает на порту 8080, и если я позвоню на http: // ip: 8080 , я увижу запрос в окне mongrel, поэтому прокси-сервер должным образом ретранслирует входящие запросы на ублюдочные серверы.

Однако моя индексная страница выполняет перенаправление на логин, если имя пользователя не существует. Поэтому я делаю следующий вызов: http: //: 8080 / app, но перенаправление идет на http: /// session / new вместо http: /// app / sessions / new. Я не совсем уверен, что apache плохо настроен, я больше сомневаюсь в rails 3.

Ниже приведена конфигурация моего apache для этого прокси, мой файл routes.rb и некоторый код, который я нашел для потенциального исправление обратного прокси-сервера, но оно, похоже, не работает.

REVERSE_PROXY_FIX

BASE_URL = ''
module ActionController
  ActionController::Base.asset_host= BASE_URL

  class UrlRewriter
#    alias old_rewrite_url rewrite_url

    # Prepends the BASE_URL to all of the URL requests created by the
    # URL rewriter in Rails.
    def rewrite_url(path, options)
      url = old_rewrite_url(path, options)
      url = url.gsub(@request.protocol + @request.host_with_port, '')
      url = BASE_URL + url
      url
    end
  end
end 

Конфигурация Apache2

# This file contains the proxy settings for apache to map all the incomming requests for a specific application to the relevant mongrel
# web server that is able to handle the incoming requests.
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
ProxyRequests Off


    Order deny,allow
    Allow from all



# The section below tells Apache where to find all the static files for our applications.
# Because these settings are application specific, we need to create entries for each application
# that we wish to run under the Apache & Mongrel configuration
Alias /Esco "c:/web/esco/public"

    Options Indexes FollowSymLinks
    AllowOverride none
    Order allow,deny
    Allow from all


ProxyPass /Esco/images !
ProxyPass /Esco/stylesheets !
ProxyPass /Esco/javascripts !
ProxyPass /Esco/ http://127.0.0.1:4000/
ProxyPass /Esco http://127.0.0.1:4000/
ProxyPassReverse /Esco/ http://127.0.0.1:4000/

routes.rb

ESCO::Application.routes.draw do
  root :to => 'static#index'
  resources :cvs
  match 'cvs/match' => 'cvs#match', :as => :match_resume, :via => :post

    # Session Routes
  # These routes are for logging in and out from the application.
  match 'session/new' => 'session#new', :as => :new_session, :via => :get
  match 'session/create' => 'session#create', :as => :create_session, :via => :put
  match 'session/destroy' => 'session#destroy', :as => :destroy_session, :via => :delete

  # Admin panel Routers
  # These routes are for managing all the entities currently residing in the application
  match 'admin' => 'admin/static#index', :as => :admin_index, :via => :get
  match 'admin/cvs/save' => 'admin/cvs#save', :as => :admin_save_cv, :via => :post
  namespace "admin" do
    resources :users, :cvs, :settings, :languages, :vacancies, :countries, :languages
  end
end

Мне также нравится знать, что apache работает в системе Windows Server 2008R2 x64, и что приложения rails работают на сервере Mongrel в той же системе в диапазоне от порта 4000 до 4010. Я надеюсь, что кто-нибудь поможет мне разобраться с этим обратным прокси.

РЕДАКТИРОВАТЬ : Я обновил файл config.ru, чтобы приложение запускалось из того же домена подпапок, что и прокси-сервер, и это позволяет мне видеть представления и т. Д., Но при этом отсутствуют таблицы стилей и изображения.

Mongrel получает следующее:

Started GET "/Esco/" for 81.82.197.2 at 2011-05-09 13:25:44 +0200
  Processing by StaticController#index as HTML
Rendered static/index.html.haml within layouts/application (15.6ms)
Completed 200 OK in 31ms (Views: 31.2ms | ActiveRecord: 0.0ms)

И если я сразу перейду к таблицам стилей, я их увижу.

5
задан codingbunny 9 May 2011 в 11:34
поделиться