您的位置:首页 > 运维架构 > Nginx

Nginx try_files

2016-05-10 19:21 615 查看
以下引自官方文档:

syntax:
try_files 
file
... [code]uri
;[/code]

try_files 
file
... =[code]code
;[/code]
Default:
Context:
server
,
location
Checks the existence of files in the specified order and usesthe first found file for request processing; the processingis performed in the current context.The path to a file is constructed from the
file
parameteraccording to theroot
and
alias directives.It is possible to check directory’s existence by specifyinga slash at the end of a name, e.g. “
$uri/
”.If none of the files were found, an internal redirect to the
uri
specified in the last parameter is
made.For example:

location /images/ {
try_files $uri /images/default.gif;
}

location = /images/default.gif {
expires 30s;
}


The last parameter can also point to a named location,as shown in examples below.Starting from version 0.7.51, the last parameter can also be a
code
:

location / {
try_files $uri $uri/index.html $uri.html =404;
}


Example in proxying Mongrel:

location / {
try_files /system/maintenance.html
$uri $uri/index.html $uri.html
@mongrel;
}

location @mongrel {
proxy_pass http://mongrel; }


Example for Drupal/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
}


In the following example,

location / {
try_files $uri $uri/ @drupal;
}


the
try_files
directive is equivalent to

location / {
error_page 404 = @drupal;
log_not_found off;
}


And here,

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

fastcgi_pass ...;

fastcgi_param SCRIPT_FILENAME /path/to$fastcgi_script_name;

...
}


try_files
checks the existence of the PHP filebefore passing the request to the FastCGI server.

Example for Wordpress and 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
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: