条件に適用できる非常に一般的な try_files 行は
location / {
try_files $uri $uri/ /test/index.html;
}
たとえば、最初の部分はlocation /
、より具体的な場所に一致しない限り、すべての場所に一致することをおそらく理解しています。location /test
2 番目の部分 ( the try_files
) は、このブロックに一致する URI を受け取ったときに$uri
最初に試行することを意味します。たとえば、 nginxはhttp://example.com/images/image.jpg
内部にファイルがあるかどうかを確認しようとします。/images
image.jpg
2 番目の条件は$uri/
、最初の条件が見つからなかった場合に URI をディレクトリとして試すことを意味し$uri
ますhttp://example.com/images/
。呼び出されたものが存在する場合、それを提供しようとします。images
$uri/
images
補足: ディレクトリの一覧表示はデフォルトで禁止されているため、持っていないautoindex on
場合は、おそらく 403 禁止エラーが発生します。
編集index
:定義した場合、nginxはディレクトリのリストを試みる前に、このフォルダー内にインデックスが存在するかどうかを確認しようとすることを忘れていました。
3 番目の条件/test/index.html
はフォールバック オプションと見なされます (1 つとフォールバックの少なくとも 2 つのオプションを使用する必要があります)。できる限り多くのオプションを使用できます (以前に制約を読み取ったことがありません)。nginx はindex.html
内部のファイルを探します。フォルダーtest
が存在する場合はそれを提供します。
3 番目の条件も失敗した場合、nginx は 404 エラー ページを提供します。
また、このような名前付きの場所と呼ばれるものがあります
location @error {
}
try_files
このように呼び出すことができます
try_files $uri $uri/ @error;
ヒント: 提供したい条件が 1 つだけの場合、たとえばフォルダー内images
で画像を提供するか、404 エラーに移動するかのいずれかのみを希望する場合は、次のような行を記述できます。
location /images {
try_files $uri =404;
}
これは、ファイルを提供するか、404 エラーを提供するかのいずれかを意味します。フォールバック オプションが必要なため、単独$uri
で使用することはできません。
次のように、必要なエラー コードを選択することもできます。=404
location /images {
try_files $uri =403;
}
画像が存在しない場合は禁止エラーが表示され、500 を使用するとサーバー エラーなどが表示されます。