我们在后端服务器上部署了一个 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 访问。
我们当前用于 PHP 应用程序、内部应用程序的 Apache 配置是:
ProxyPassReverse /app1 http ://ip.address:9000/app1
ProxyPass /app1 http ://ip.address:9000/app1 retry=5
应用程序已经加载完毕,但是存在两个问题:
- 所有静态文件(javascript、图像和 CSS)都丢失了。apache 在其自己的目录中查找它,而不是在托管 Rails 应用程序的服务器上查找它。
- 其他一些功能已损坏。
我不知道配置此设置的最佳方法是什么。在前端工作还是在后端进行更多配置?我应该删除 sub_uri 并在前端服务器中进行所有配置吗?我目前正在RailsBaseURI
Rails 服务器上使用。阅读此网站后,还有其他选项,例如PassengerEnabled
,PassengerAppRoot
。
我该怎么办?我对 Ruby、Rails 和 Passenger 还很陌生,非常感谢任何帮助。
答案1
您需要将以下内容添加到您的config/production.rb
文件中,假设这与您的生产环境相关。
config.action_controller.relative_url_root = '/app1'
这是取自铁路票 #1946