Ruby on rails 3 如何从nginx而不是unicorn为缓存的ruby应用提供服务?
我有一个rails 3.0应用程序,它有很好的流量,这个应用程序是通过Nginx和Unicorn的组合运行的。问题是,unicorn及其工作人员消耗了大量资源,而且由于我的应用程序的性质,很多记录都是从数据库中提取出来的,这就像是为那些数据库记录生成的几乎是静态的文件提供服务 我想知道你是否可以生成这种静态文件,缓存它们,通过nginx而不是通过unicorn的应用程序为它们提供服务,从而使用更少的资源,并在1000次请求后重新加载缓存 我正在开始我的研究,我不知道很多服务器配置,所以我希望你们能给我一些建议,这将是伟大的 谢谢 我想你的意思是如何从nginx而不是Unicorn提供静态资产 我刚刚解决了这个问题,下面是我的Ruby on rails 3 如何从nginx而不是unicorn为缓存的ruby应用提供服务?,ruby-on-rails-3,deployment,high-traffic,Ruby On Rails 3,Deployment,High Traffic,我有一个rails 3.0应用程序,它有很好的流量,这个应用程序是通过Nginx和Unicorn的组合运行的。问题是,unicorn及其工作人员消耗了大量资源,而且由于我的应用程序的性质,很多记录都是从数据库中提取出来的,这就像是为那些数据库记录生成的几乎是静态的文件提供服务 我想知道你是否可以生成这种静态文件,缓存它们,通过nginx而不是通过unicorn的应用程序为它们提供服务,从而使用更少的资源,并在1000次请求后重新加载缓存 我正在开始我的研究,我不知道很多服务器配置,所以我希望你们
nginx.conf
# Prefer to serve static files directly from nginx to avoid unnecessary
# data copies from the application server.
try_files $uri/index.html $uri.html $uri @app;
# Set Far Future Cache on Static Assets
# All requests starting with /xyz/ where xyz is
# one of the options below (~* == case insensitive)
location ~* ^/(images|javascripts|stylesheets)/ {
# Per RFC2616 - 1 year maximum expiry
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
expires 1y;
add_header Cache-Control public;
# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
add_header Last-Modified "";
add_header ETag "";
break;
}
location @app { ... }
我使用的是Rails 3.0.10,因此您需要类似于^/assets/
的东西。~*
指令告诉nginx在sensitive reg ex compare中进行大小写比较。此外,您不需要像在其他语言中那样避开反斜杠
以下是关于以下内容的Nginx文档: