原文链接:https://www.cpweb.top/704 |
---|
Syntax: try_files file ... uri;
try_files file ... @name;
try_files file ... =code;
Default: —
Context: server, location
try_files指令,用于路径匹配,nginx会按它指定顺序检查文件是否存在,并使用找到的第一个文件进行请求处理。
文件的路径是根据root和alias指令从file参数中构造的完整的文件路径。可以通过在名称末尾指定斜杠(如"uri /")来检查目录是否存在。如果未找到任何文件,则进行内部重定向到最后一个参数中指定的uri。例如:
location /images/ {
try_files $uri /images/default.gif;
}
location = /images/default.gif {
expires 30s;
}
最后一个参数也可以指向一个命名的位置或者代码,如下面的示例所示。
server {
listen 80;
server_name test.cp.com;
root /test;
location / {
index index.html;
try_files $uri $uri/ $uri.html /test.html =401;
}
}
当我们去访问http://test.cp.com/1.html时。
1、会先匹配到$uri,nginx会检查test目录下有没有1.html文件,有就返回响应,没有匹配下一个。
2、匹配到$uri/时,会检查有没有1.html目录,有默认返回这个目录下的index.html文件,没有匹配下一个。
3、匹配到$uri.html,会检查站点目录下有没有1.html.html,有返回响应,没有匹配下一个。
4、匹配到/test.html,会检查站点目录下有没有test.html,有就返回响应,没有匹配下一个。
5、匹配到=401,会给用户返回401状态码。