Estoy intentando configurar una aplicación Rails 3 detrás de un servidor web Apache2 que actúa como un proxy. El servidor web Apache se está ejecutando en el puerto 8080, y si realizo una llamada al http://ip:8080, veo la solicitud en la ventana de mongrel, por lo que el proxy retransmite correctamente las solicitudes entrantes a los servidores mongrel.Aplicación Rails3 detrás de un Proxy
Sin embargo, mi página de índice realiza un redireccionamiento al inicio de sesión si no existe un nombre de usuario. Así que hago la siguiente llamada: http: //: 8080/app, pero el redireccionamiento va a http: /// session/new en lugar de http: /// app/sessio/new . No estoy seguro de que el Apache está mal configurado, tengo más dudas sobre los rieles 3.
A continuación se muestra la configuración de mi apache para esta información de proxy, mi archivo routes.rb y algún código que encontré para una posible corrección de proxy inverso, pero no lo hace Parece que funciona
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
Apache 2 config
# 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
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
# 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"
<Directory "C:/web/esco/public">
Options Indexes FollowSymLinks
AllowOverride none
Order allow,deny
Allow from all
</Directory>
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
También me gusta mnetion que el Apache se ejecuta en un sistema de Windows Server 2008R2 x64 y que las aplicaciones de rieles se ejecutan dentro de un servidor Mongrel en el mismo sistema que el puerto 400 0 -> 4010. Espero que alguien me ayude a ordenar este proxy inverso.
EDITAR: He actualizado el archivo config.ru para ejecutar la aplicación desde el mismo dominio subcarpeta como el proxy lo haría, y eso me permite ver las vistas, etc, pero todavía faltan las hojas de estilo e imágenes .
Mestizo recibe lo siguiente:
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)
Y si hojeo a los stylsheets directamente, pueda verlas.
He agregado en el config.ru las cosas agregadas y ahora recibo las vistas, etc., pero todavía faltan el CSS y las imágenes. Si busco los archivos directamente, puedo verlos sin embargo. –
@NekoNova: he editado mi respuesta para incluir el cambio de la relative_root_url que alineará las rutas de los recursos css y js. –
no hace ninguna diferencia, me temo. la aplicación funciona bien en localhost en el subdirectorio/app, pero al pasar cosas a través del proxy, css etc. no se carga –