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

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

我们在后端服务器上部署了一个 Rails 应用程序,通过 Passenger 提供服务。此应用程序在端口 9000 提供服务,并配置为使用sub_uri。最初的 URL 是http://ip.address:9000/,现在在 提供服务http://ip.address:9000/app1。所有 CSS、javascript、图像文件都已加载,应用程序中没有错误。

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

我们当前用于 PHP 应用程序、内部应用程序的 Apache 配置是:

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

应用程序已经加载完毕,但是存在两个问题:

  1. 所有静态文件(javascript、图像和 CSS)都丢失了。apache 在其自己的目录中查找它,而不是在托管 Rails 应用程序的服务器上查找它。
  2. 其他一些功能已损坏。

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

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

答案1

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

config.action_controller.relative_url_root = '/app1'

这是取自铁路票 #1946

相关内容