问题概要:如何设置 Nginx 来为网站提供静态页面,如何以及在何处安装此 Nginx 服务器(它是否应该与安装 Ruby on Rails 服务器位于同一台服务器上)以及它是否在 Nginx 反向代理后面工作。
最初的问题是 rails 应用程序未发送 css 文件,因此在生产环境中无法渲染站点。在开发环境中,站点可以正确渲染。
我目前有一个 Nginx 反向代理服务器,它充当多个域网站(每个网站域都在自己的服务器上运行,具有单独的 LAN IP 地址)的反向代理,运行一个 WAN IP 地址。
Ruby 版本 2.5 Rails 版本 5.2.2
刚刚开始使用 Ruby on Rails 并建立了一个网站(example.com),它有五个页面,其中四个是静态的(欢迎、帮助、联系新闻),一个页面是动态的并从数据库中提取数据。
我必须运行下面的代码,然后在 RailsApp/config/environments/productions.rb 中将公共文件服务器启用为 true。
$ bundle exec rake assets:预编译
RailsApp/config/environments/productions.rb
config.public_file_server.enabled = true
目前有 WAN IP -> Nginx 反向代理(服务器 1)-> Ruby on Rails 应用服务器(服务器 2)。
托管 Ruby on Rails App 中的静态页面的推荐方法是什么。也就是说,Nginx 反向代理(服务器 1)是否需要本地 LAN 文件访问 Rails App(服务器 2)才能访问静态站点页面,还是在服务器 2 上安装另一个 Nginx Web 服务器,然后配置这个新的 Nginx 来处理静态页面请求?
答案1
根据导轨
config.public_file_server.enabled 配置 Rails 从公共目录提供静态文件。此选项默认为 true,但在生产环境中,它被设置为 false,因为用于运行应用程序的服务器软件(例如 NGINX 或 Apache)应该改为提供静态文件。如果您使用 WEBrick 在生产模式下运行或测试您的应用程序(不建议在生产中使用 WEBrick),请将此选项设置为 true。否则,您将无法使用页面缓存并请求公共目录下的文件。
关于你的问题 - 唯一的 nginx 服务器(反向代理)是否应该提供 rails 静态文件?答案:是的(这是首选方案)
也许这个例子配置有帮助。