12

正常に動作し、静的ファイルを適切に提供するNginx構成があります。

location /static/ {
    alias /tmp/static/;
    expires 30d;
    access_log off;
}

しかし、私が今やりたいのは、静的ファイルがに存在しない場合/tmp/static、Nginxはでファイルを検索することです/srv/www/site/static。それを達成する方法がわかりません。いくつかのことを試しましたがtry_files、適切に使用する方法がわかりません。

4

4 に答える 4

10

ルートを使用する2つのパスの共通プレフィックス(この場合は/)に設定してから、try_files引数で残りのパスを指定するだけです。

location /static/ {
  root /;
  try_files /tmp$uri /srv/www/site$uri =404;
  expires 30d;
  access_log off;
}

ある場所でroot/を使用するのは戸惑うかもしれませんが、try_filesを使用すると、/ tmp/staticまたは/srv/ www / site/static以外のファイルが提供されなくなります。

于 2012-09-05T11:33:29.130 に答える
2

以下はトリックを行う必要があります:

location /static/ {
  expires 30d;
  access_log off;
  try_files tmp/static/$uri tmp/static/$uri/ tmp/static2/$uri tmp/static2/$uri/;
}

ドキュメントとtry_filesの使用例については、http: //nginx.org/en/docs/http/ngx_http_core_module.html#try_filesを参照してください。

于 2012-09-05T11:40:19.417 に答える
1

一連のフォールバックロケーションを処理するために、「root」で名前付きロケーションを使用できます。名前付きの場所内では「エイリアス」を使用できないことに注意してください。

location / {
    root /path/to/primary/html;
    try_files $uri $uri/ @fallback;
}
location @fallback {
    root /path/to/secondary/html;
    try_files $uri $uri/ =404;
}
于 2016-08-20T21:13:44.990 に答える
-1

SlowFSキャッシュモジュールを使用することでニーズに対応できるようです。静的コンテンツを、おそらくより高速なディスクに保存されている一時ディレクトリにキャッシュし、フォールバックを管理します。

于 2012-09-05T00:52:01.697 に答える