一.配置说明
官方文档:try_files配置说明
1.try_files的语法规则:
- 格式1:try_files file … uri;
- 格式2:try_files file … =code;
可应用的上下文:server,location段
2.try_files的语法解释
Checks the existence of files in the specified order and uses the first found file for request processing; the processing is performed in the current context. The path to a file is constructed from the fileparameter according to the root and alias directives. It is possible to check directory’s existence by specifying a 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.
上面这段话的几个要点:
- try_files的作用:按指定的file顺序查找存在的文件,并使用第一个找到的文件进行请求处理
- 查找路径(uri)是按照给定的root或alias为根路径来查找的
- 如果给出的file都没有匹配到,则重新请求最后一个参数给定的uri,就是新的location匹配
- 如果是格式2,如果最后一个参数是 = 404 ,若给出的file都没有匹配到,则最后返回404的响应码
二.示例
配置示例:1
2
3
4location ^~ /order {
alias /workspace/static/test/;
try_files $uri $uri/ /others/index.html;
}
比如我们的server_name是test.liaosi.site
,则访问 http://test.liaosi.site/order/123,会进行如下3步查找过程:
- 查找文件:
/workspace/static/test/123
。 - 查找文件夹
/workspace/static/test/123/
下的index.html文件。 - 改为请求这个地址:http://test.liaosi.site/others/index.html。
注意事项:
- 上面的
$uri
代表的是/workspace/static/test/
这个路径。 - 上面的例子中如果没try_files的配置中没有加
$uri/
,则不会去匹配目录下的索引页,即不会去访问 http://test.liaosi.site/order/123/index.html。
其它用法
1 | loaction / { |
以上中若未找到给定顺序的文件,则将会交给location @abcl处理(相当于匹配到了@abc的路径)。