Ruby on rails 3 如何从nginx而不是unicorn为缓存的ruby应用提供服务?

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次请求后重新加载缓存 我正在开始我的研究,我不知道很多服务器配置,所以我希望你们

我有一个rails 3.0应用程序,它有很好的流量,这个应用程序是通过Nginx和Unicorn的组合运行的。问题是,unicorn及其工作人员消耗了大量资源,而且由于我的应用程序的性质,很多记录都是从数据库中提取出来的,这就像是为那些数据库记录生成的几乎是静态的文件提供服务

我想知道你是否可以生成这种静态文件,缓存它们,通过nginx而不是通过unicorn的应用程序为它们提供服务,从而使用更少的资源,并在1000次请求后重新加载缓存

我正在开始我的研究,我不知道很多服务器配置,所以我希望你们能给我一些建议,这将是伟大的

谢谢

我想你的意思是如何从nginx而不是Unicorn提供静态资产

我刚刚解决了这个问题,下面是我的
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文档: