相逢意气为君饮,系马高楼垂柳边。这篇文章主要讲述try_files $uri $uri/ @router相关的知识,希望能为你提供帮助。
try_file用法
nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率
location/ {
root/var/www/build;
indexindex.html index.htm;
try_files $uri $uri/ @router;
}location @router {
rewrite ^(.+)$ /index.html last;
}
try_files $uri $uri/ @aaaaa; 这句话是什么意思?
try_files从字面上理解就是尝试文件,再结合环境理解就是“尝试读取文件”,那他想读取什么文件呢,
答:读取静态文件
u r i 这 个 是 n g i n x 的 一 个 变 量 , 存 放 着 用 户 访 问 的 地 址 , 比 如 : h t t p : / / w w w . x x x . c o m / i n d e x . h t m l , 那 么 uri 这个是nginx的一个变量,存放着用户访问的地址, 比如:http://www.xxx.com/index.html, 那么uri这个是nginx的一个变量,存放着用户访问的地址,比如:http://www.xxx.com/index.html,那么uri就是 /index.html
u r i / 代 表 访 问 的 是 一 个 目 录 , 比 如 : http://www.xxx.com/hello/test/ , 那 么 uri/ 代表访问的是一个目录,比如:http://www.xxx.com/hello/test/ ,那么uri/代表访问的是一个目录,比如:http://www.xxx.com/hello/test/,那么uri/就是 /hello/test/
完整的解释就是:try_files 去尝试到网站目录读取用户访问的文件,如果第一个变量存在,就直接返回;
不存在继续读取第二个变量,如果存在,直接返回;不存在直接跳转到第三个参数上。
【try_files $uri $uri/ @router】比如用户访问这个网地址:http://www.xxx.com/test.html
try_files首先会判断他是文件,还是一个目录,结果发现他是文件,与第一个参数 $uri变量匹配。
然后去到网站目录下去查找test.html文件是否存在,如果存在直接读取返回。如果不存在直接跳转到第三个参数,而第三个参数是一个location,而这个location里面配置的就是rewrite规则。
也可以写成(未经证实)
location/ {
root/var/www/build;
indexindex.html index.htm;
try_files $uri $uri/ @router;
}
可以解释为@router默认会去读取前端的首页,所以就不需要再写localtion @router {}
推荐阅读
- Kubernetes 持久化数据存储 StorageClass
- ansbile
- GitLab Jenkins CI/CD 自动化部署
- 马士兵mca架构师全套
- Centos7下用户登录失败N次后锁定用户禁止登陆的方法
- 每天学点Linux命令之umask
- Linux虚拟机常见使用及常见问题
- 等保咨询
- vim 日常积累