Назад | Перейти на главную страницу

Прокси-сервер приложения Rails, управляемый Apache, не обслуживающий CSS, Javascript и изображения

Мы развернули приложение Rails на внутреннем сервере, обслуживаемом через Passenger. Это приложение обслуживается через порт 9000 и настроено для использования sub_uri. Первоначально URL-адрес http://ip.address:9000/, а теперь его подают в http://ip.address:9000/app1. Все файлы CSS, javascript, изображений загружаются, и в приложении нет ошибок.

Теперь нам нужно интегрировать это приложение в нашу производственную среду. Вышеупомянутый внутренний сервер не будет доступен напрямую; все приложения должны быть прокси-серверами через Apache на сервере переднего плана. С помощью ReverseProxy и Proxy, это приложение Rails должно быть доступно через http: //domain.name/app1.

Текущая конфигурация apache, которую мы используем для приложений PHP, внутренние приложения:

ProxyPassReverse /app1 http ://ip.address:9000/app1
ProxyPass /app1 http ://ip.address:9000/app1 retry=5

Приложение вроде загрузилось, но есть 2 проблемы:

  1. все статические файлы (javascript, изображения и CSS) отсутствуют. Apache ищет его в своем собственном каталоге, а не на сервере, на котором размещено приложение Rails.
  2. некоторые другие функции не работают.

Я не знаю, как лучше всего настроить эту установку. Работать над интерфейсом или выполнять дополнительную настройку на сервере? Следует ли мне удалить sub_uri и выполнить все настройки на внешнем сервере? Я сейчас использую RailsBaseURI на сервере Rails. После прочтения этого сайта есть другие варианты, такие как PassengerEnabled, PassengerAppRoot.

Что я должен делать? Я новичок в Ruby, Rails и Passenger, и я очень благодарен за любую помощь.

Вам необходимо добавить следующее в свой config/production.rb файл, предполагая, что это имеет отношение к вашей производственной среде.

config.action_controller.relative_url_root = '/app1'

Это взято из Билет на рельсы №1946.