3

私は Rails 3.0 アプリを持っています。これにはかなりの量のトラフィックがあり、Nginx と Unicorn を組み合わせて実行しているアプリです。問題は、ユニコーンとそのワーカーが多くのリソースを消費することです。私のアプリの性質上、多くのレコードがデータベースから取得され、それらのデータベース レコードで生成されたほぼ静的なファイルを提供するようなものです。

この種の静的ファイルを生成してキャッシュし、ユニコーンを介してアプリの代わりにnginxを介してそれらを提供し、使用するリソースを減らし、1000リクエスト後にキャッシュをリロードすることができるかどうか疑問に思っていました

私はそれについての私の研究を始めています.私は多くのサーバー構成を知らないので、何かアドバイスをいただければ幸いです.

ありがとう!

4

1 に答える 1

3

ユニコーンではなくnginxから静的アセットを提供するにはどうすればよいです

私はちょうどこの問題を解決しました。ここに私のスニペットがあります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 に大文字と小文字を区別しない正規表現の比較を行うように指示します。また、他の言語のようにバックスラッシュをエスケープする必要はありません。

これに関するNginxのドキュメントは次のとおりです。 http://wiki.nginx.org/HttpCoreModule#location

于 2012-02-16T18:01:23.900 に答える