try_files会按顺序检查文件是否存在,返回第一个找到的文件或文件夹(结尾加斜线表示为文件夹),如果所有文件或文件夹都找不到,会进行一个内部重定向到最后一个参数。只有最后一个参数可以引起一 个内部重定向,之前的参数只设置内部URI的指向。最后一个参数是回退URI且必须存在,否则会出现内 部500错误。
语法格式:
- try_files file ... uri;
- try_files file ... =code;
可以放置的位置:server, location
用法示例:
修改配置文件,如果访问的资源不存在,就定向到/try/tryfile.html页面
[root@localhost conf.d]# vi uhn.conf
[root@localhost conf.d]# cat uhn.conf
server {
listen 80;
server_name www.uhn.cn;
error_page 500 502 503 504 /error.html;
location = /error.html {
root /data/nginx/html/uhn;
}
location / {
root /data/nginx/html/uhn;
try_files $uri $uri.html $uri/index.html /try/tryfile.html;
# auth_basic "login password";
# auth_basic_user_file /software/nginx/conf/.htpasswd;
}
}
创建/try/tryfile.html页面
[root@localhost conf.d]# mkdir -p /data/nginx/html/uhn/try
[root@localhost conf.d]# echo "tryfile page" > /data/nginx/html/uhn/try/tryfile.html
访问一个不存在的资源页面,确实显示了我们定义的tryfile.html页面内容
还可以定义错误返回码,修改配置文件
[root@localhost conf.d]# cat uhn.conf
server {
listen 80;
server_name www.uhn.cn;
error_page 500 502 503 504 /error.html;
location = /error.html {
root /data/nginx/html/uhn;
}
location / {
root /data/nginx/html/uhn;
try_files $uri $uri.html $uri/index.html =911;
使用浏览器访问测试,可以看到返回错误码911 (linux 下使用curl -I 也可以查看到 )