一、指令说明
try_files指令
语法:try_files file ... uri 或 try_files file ... = code
默认值:无
作用域:server location
其作用是按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有的文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。
需要注意的是,只有最后一个参数可以引起一个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内部500错误。命名的location也可以使用在最后一个参数中。与rewrite指令不同,如果回退URI不是命名的location那么$args不会自动保留,如果你想保留$args,则必须明确声明。
try_files $uri $uri/ /index.php?q=$uri&$args;
二、示例
所访问fn目录下如果文件不存在则跳转到指定域名
[root@linux-node2 /etc/nginx/conf.d]# cat fn.conf
server {
listen 80;
server_name 192.168.5.72;
location /fn {
alias /usr/share/nginx/html/fn/;
index index.html index.php;
try_files $uri $uri/ @mudidi;
}
location @mudidi{
proxy_pass http://www.baidu.com;
}
}
[root@linux-node2 ~]# ls /usr/share/nginx/html/fn/
a.txt index index.html long.html

跳转到指定文件,404.html文件需要存在:
location /fn {
alias /usr/share/nginx/html/fn;
index index.html index.php;
try_files $uri $uri/ 404.html;
}
来源:https://www.cnblogs.com/cyleon/p/12403171.html