Приложение Rails3 за прокси - PullRequest
5 голосов
/ 09 мая 2011

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

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

Ниже приведена конфигурация моего apache для этого прокси-файла, мой файл rout.rb и некоторый код, который я нашел для потенциального исправления обратного прокси, но, похоже, онРаботаработает в системе Windows Server 2008R2 x64 и что приложения rails запускаются на сервере Mongrel в той же системе, начиная с порта 4000 -> 4010. Я надеюсь, что кто-то может помочь мне разобраться с этим обратным прокси-сервером. EDIT : я обновил файл config.ru для запуска приложения из того же домена подпапок, что и прокси-сервер, и это позволяет мне просматривать представления и т. Д., Но при этом по-прежнему отсутствуют таблицы стилей и изображения.

Монгрel получает следующее:

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)

И если я перехожу к стилевым таблицам напрямую, я вижу их.

Ответы [ 3 ]

7 голосов
/ 01 июня 2011

Вот как я настроил приложение RoR 3 за прокси-сервером Apache 2, используя дополнительный URI.

Сначала я настроил приложение для запуска в подчиненном URI с помощью webrick, получив следующий URL:

http://localhost:3000/myapp  

В config / environment.rb я добавил следующую строку:

ENV['RAILS_RELATIVE_URL_ROOT'] = "/myapp"

Далее в config.ru я изменил следующую строку:

run Myapp::Application

до:

map '/myapp' do
  run Myapp::Application
end

Запустил webrick и указал моему браузеру следующий URL, чтобы убедиться, что он работает:

http://localhost:3000/myapp

Настройка Apache следующая. Включены модули proxy и proxy_http. Вот как выглядит мой proxy.conf:

ProxyRequests On
<Proxy *>
    AddDefaultCharset off        Order deny,allow
    Allow from all
    #Allow from .example.com
</Proxy>

ProxyPass /myapp http://localhost:3000/myapp
ProxyPassReverse /myapp http://localhost:3000/myapp

Перезапустил Apache и мое приложение было доступно по адресу:

http://www.example.com/myapp

Все ссылки и перенаправления работают.

0 голосов
/ 26 мая 2011

Я наконец решил проблему, переключившись на интерфейс Nginx вместо apache. Много проще в настройке и работает как шарм.

Я провел некоторое исследование по прокси-серверу Apache для Windows и обнаружил несколько страниц с описанной проблемой, о которой сообщалось, и об ошибках, упомянутых в определенном файле .so. Я наконец отказался от этого и использовал nginx

0 голосов
/ 09 мая 2011

Я думаю, что ваша проблема в том, что rails и rack по умолчанию предполагают, что корневым URL является / not / app

Это можно исправить, настроив конфигурацию Rails Rack .

См. Этот ответ о том, как это сделать: Изменение базового URL для разработки на Rails 3

и добавьте его в начало вашего файла environment.rb

ENV['RAILS_RELATIVE_URL_ROOT'] = "/app"

Надеюсь, это поможет.

...