nginx中alias、root、try_files的用法

1. root

语法:root path
配置段:http、server、location、if

root的处理结果是:root路径+location路径

location /t/ {
     root /www/root/html/;
}

请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

2.alias

语法:alias path
配置段:location

alias的处理结果是:使用alias路径替换location路径
alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无

location /t/ {
 alias /www/root/html/new_t/;
}

请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。

3.try_files

语法:try_files 文件路径... 重写的uri
配置段:server location

  1. try_files后面至少要有一个文件路径一个重写uri。
  2. 查找路径是按照给定的root或alias为根路径来查找的;
  3. 如果给出的file都没有匹配到,则会进行一个内部重定向到最后一个参数给定的uri,就是新的location匹配
  4. 最后一个参数是回退URI且必须存在,否则会出现内部500错误;
location / {
  root /data/dist;
  try_files $uri $uri/ /index.html
  expires 7d; # expires 是nginx控制缓存的一种方式,7d=7天。
}

访问http://localhost/example?a=1$uri/example$request_uri包括URI参数为/example?a=1,处理顺序是:

  1. $uri是指/example文件, 会先找root目录/data/dist下的/example文件,也就是/data/dist/example这个文件,找到直接返回。
  2. $uri/也就是/example/目录,找不到再尝试找/data/dist/example/目录下的index开头的文件,找到直接返回。
  3. 如果前面文件都没匹配找到,就会 fallback 到 try_files 的最后一个选项 /index.html,发起一个内部 “子请求”,也就是相当于 nginx 发起一个 HTTP 请求到 http://localhost/index.html。重新匹配location。
location / {
  try_files /app/cache/ $uri @fallback;
  index index.php index.html;
}

location @fallback {
  rewrite ^/(.*)$ http://www.baidu.com # 跳转到百度,和try_files最后一个参数作用相同。
}

匹配不到的话,重定向到 @fallback,然后重写到百度。

参考

nginx学习教程:
https://wizardforcel.gitbooks.io/nginx-doc/content/Text/7.1_fullexample.html
https://openresty.org/download/agentzh-nginx-tutorials-zhcn.html

lua学习教程:
https://www.runoob.com/lua/lua-tutorial.html

openresty学习教程:
https://openresty.org/cn/ebooks.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值