由Apache代理的Rails应用程序不提供CSS,Javascript和图像

我们在后台服务器上部署了一个Rails应用程序,通过Passenger服务。 这个应用程序在端口9000服务,并被configuration为使用sub_uri 。 最初的URL是http://ip.address:9000/ ,现在它在http://ip.address:9000/app1 。 所有的CSS,JavaScript,图像文件都被加载,并且在应用程序中没有错误。

现在我们需要将这个应用程序整合到我们的生产环境中 上面的后端服务器不能直接访问; 所有应用程序都将通过Apache在前端服务器上进行代理。 使用ReverseProxyProxy ,可以通过http://domain.name/app1访问这个Rails应用程序。

我们用于PHP应用程序,内部应用程序的当前apacheconfiguration是:

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

应用程序有点负载,但有2个问题:

  1. 所有静态文件(JavaScript,图像和CSS)都丢失了。 apache在它自己的目录中查找它,而不是在托pipeRails应用程序的服务器上。
  2. 一些其他function被打破。

我不知道什么是configuration此设置的最佳方法。 在前端工作还是在后端做更多的configuration? 我应该删除sub_uri并执行前端服务器中的所有configuration吗? 我目前在Rails服务器上使用RailsBaseURI 。 阅读本网站后,还有其他选项,如PassengerEnabledPassengerAppRoot

我该怎么办? 我对Ruby,Rails和Passenger很陌生,任何帮助都非常感谢。

您需要将以下内容添加到您的config/production.rb文件中,假设这与您的生产环境相关。

 config.action_controller.relative_url_root = '/app1' 

这是从1946年的Rails车票中拿走的