try_filesの個人的な理解
1267 ワード
以下のプロファイルを例にとります.
try_filesの最初の'$uri'はnginxがハードディスクの対応するパスにファイルを探しに行くことを表し、見つけられる場合はlocationブロックの内容を下に実行し、つまり見つけたファイルをfastcgiに渡して実行し、見つからない場合はアクセスしたuriの後ろに'/'を追加し、ハードディスクの中で対応するディレクトリを探し続け、同じように処理します.そうでなければ、今回の要求内部を最後のパラメータにリダイレクトし、すなわち404を返す.
ここで注意すべき点はいくつかあります.
一つは訪問だsite.com/example'の場合、'$uri/'が構成されていない場合、nginxは対応するexampleファイルのみを探し、exampleディレクトリは探しません.もしあなたを訪問するなら.site.com/example/',nginxは対応するexampleディレクトリのみを探し、exampleファイルは探しません.つまりtry_がなければfilesという構成では、nginxは要求されたuriに従ってハードディスク('/'で終わる)やディレクトリ('/'で終わる)を完全に探し、勝手に'/'を追加したり削除したりしません.
二つ目はtry_filesはnginx’にファイルを探してもらうだけで、探し終わったら直接locationブロックから飛び出すのではなく、下に沿って実行され、後ろにproxy_があります.passまたはfastcgi_passは見つけたファイルを対応する場所に転送し、proxy_がありません.passまたはfastcgi_passは直接ファイルをクライアントに返します.ファイルが見つからない場合は、このリクエストの内部を最後のパラメータにリダイレクトするので、最後のパラメータは、'=404'や他のlocationにリダイレクトするなど、存在しない場合は、ループリダイレクトなどのサーバ内部の異常が発生する可能性があります.
location ~ \.php$ {
root html;
try_files $uri $uri/ =404;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi_params;
}
try_filesの最初の'$uri'はnginxがハードディスクの対応するパスにファイルを探しに行くことを表し、見つけられる場合はlocationブロックの内容を下に実行し、つまり見つけたファイルをfastcgiに渡して実行し、見つからない場合はアクセスしたuriの後ろに'/'を追加し、ハードディスクの中で対応するディレクトリを探し続け、同じように処理します.そうでなければ、今回の要求内部を最後のパラメータにリダイレクトし、すなわち404を返す.
ここで注意すべき点はいくつかあります.
一つは訪問だsite.com/example'の場合、'$uri/'が構成されていない場合、nginxは対応するexampleファイルのみを探し、exampleディレクトリは探しません.もしあなたを訪問するなら.site.com/example/',nginxは対応するexampleディレクトリのみを探し、exampleファイルは探しません.つまりtry_がなければfilesという構成では、nginxは要求されたuriに従ってハードディスク('/'で終わる)やディレクトリ('/'で終わる)を完全に探し、勝手に'/'を追加したり削除したりしません.
二つ目はtry_filesはnginx’にファイルを探してもらうだけで、探し終わったら直接locationブロックから飛び出すのではなく、下に沿って実行され、後ろにproxy_があります.passまたはfastcgi_passは見つけたファイルを対応する場所に転送し、proxy_がありません.passまたはfastcgi_passは直接ファイルをクライアントに返します.ファイルが見つからない場合は、このリクエストの内部を最後のパラメータにリダイレクトするので、最後のパラメータは、'=404'や他のlocationにリダイレクトするなど、存在しない場合は、ループリダイレクトなどのサーバ内部の異常が発生する可能性があります.