同前のtry_files

2474 ワード

nginxのtry_files
http://nginx.org/en/docs/http/ngx_http_コールバックmodule.唵try_files
try_files
を選択します。
説明
構文
try_files file ... uritry_files file ... =codeデフォルト
——
コンテキスト
server、location
指定された順序でファイルが存在するかどうかを確認し、最初に見つけたファイルを使って要求処理を行います。処理は現在のコンテキストで実行されます。指向性ファイルの経路は、rootおよびalias命令に従ってfileからパラメータ構成される。ディレクトリが存在するかどうかは、名前の末尾に斜線を指定することによって確認することができる。例えば$URI/。任意のファイルが見つからない場合、内部リダイレクトは最後のパラメータで指定されたuriに向けられます。たとえば:
location /images/ {
    try_files $uri /images/default.gif;
}

location = /images/default.gif {
    expires 30s;
}
最後のパラメータは、以下の例のように、名前付きのlocationを指すこともできる。0.7.51バージョンから始まり、最後のパラメータはcodeであってもよい。
location / {
    try_files $uri $uri/index.html $uri.html =404;
}
プロキシMongrelの例:
location / {
    try_files /system/maintenance.html
              $uri $uri/index.html $uri.html
              @mongrel;
}

location @mongrel {
    proxy_pass http://mongrel;
}
Druplal/FastCGI例:
location / {
    try_files $uri $uri/ @drupal;
}

location ~ \.php$ {
    try_files $uri @drupal;

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
    fastcgi_param SCRIPT_NAME     $fastcgi_script_name;
    fastcgi_param QUERY_STRING    $args;

    ... other fastcgi_param's
}

location @drupal {
    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
    fastcgi_param SCRIPT_NAME     /index.php;
    fastcgi_param QUERY_STRING    q=$uri&$args;

    ... other fastcgi_param's
}
以下の例では
location / {
    try_files $uri $uri/ @drupal;
}
try_filesコマンドは
location / {
    error_page 404 = @drupal;
    log_not_found off;
}
もう一つの例があります
location ~ \.php$ {
    try_files $uri @drupal;

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;

    ...
}
リクエストをFastCGIサーバに転送する前に、try_filesはPHPファイルが存在するかどうかを確認します。
WordpressとJoomlaの例:
location / {
    try_files $uri $uri/ @wordpress;
}

location ~ \.php$ {
    try_files $uri @wordpress;

    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;
    ... other fastcgi_param's
}

location @wordpress {
    fastcgi_pass ...;

    fastcgi_param SCRIPT_FILENAME /path/to/index.php;
    ... other fastcgi_param's
}