Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails服务器与前端web服务器_Ruby On Rails_Ruby On Rails 3_Nginx_Gzip_Cedar - Fatal编程技术网

Ruby on rails Rails服务器与前端web服务器

Ruby on rails Rails服务器与前端web服务器,ruby-on-rails,ruby-on-rails-3,nginx,gzip,cedar,Ruby On Rails,Ruby On Rails 3,Nginx,Gzip,Cedar,我在看RailsCast on PageCaching:其中有一点Ryan Bates说了一些类似的话,“公共目录被设置为由前端web服务器提供静态文件” 这让我意识到我并不真正理解Rails服务器和“前端”web服务器的区别 我希望有人能向我解释这一点,也许是对我的本地环境以及Heroku上的生产环境的解释,因为我最近升级到了Cedar,现在必须手动处理gzip压缩,根据我读到的一篇博客,这是因为“在Cedar中,请求不再通过代理服务器(nginx)”.在heroku上,自从cedar之后,就

我在看RailsCast on PageCaching:其中有一点Ryan Bates说了一些类似的话,“公共目录被设置为由前端web服务器提供静态文件”

这让我意识到我并不真正理解Rails服务器和“前端”web服务器的区别


我希望有人能向我解释这一点,也许是对我的本地环境以及Heroku上的生产环境的解释,因为我最近升级到了Cedar,现在必须手动处理gzip压缩,根据我读到的一篇博客,这是因为“在Cedar中,请求不再通过代理服务器(nginx)”.

在heroku上,自从cedar之后,就再也没有“前端Web服务器”这样的东西了

在cedar之前,来自外部的请求由nginx(因此是前端服务器)处理,后者反过来要求本地rails服务器(thin、unicorn、webrick等)生成页面

如果前端服务器检测到请求的url实际上与现有文件相对应,它将直接为其提供服务,而不向rails服务器进程请求任何内容。在大多数情况下,这仍然是在专用服务器上管理请求的方式

<> Pr> HeloCu现在是将Rails服务器直接暴露到外部世界,在中间没有像Apache或nGixx这样的经典Web服务器。 对于使用heroku的您来说,这意味着您应该将您的资产和缓存文件上传到第三方cdn服务器,以避免宝贵的rails处理时间用于服务这些资源

或者您可以使用动作缓存,这样您就可以在memcache中而不是在
public/
中编写html。事实上,这是一个错误

关于本地环境的注意事项:您可能也直接使用rails服务器进程。当您运行
rails服务器时,就会发生这种情况:它直接在端口3000上启动webrick或瘦服务器。所以,那里也没有“前台服务器”

还请注意,在rails-4中,操作和页面缓存不再是标准的,而是提供的。缓存的标准新方法是使用memcache,因此heroku在这里没有问题