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,找不到文件的话可能出现无限循环,导致错误500的出现。
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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是一款流行的高性能Web服务器和反向代理服务器。Location、RootAlias和正则都是Nginx非常常见的关键字。 Location指令用于配置站点的URL路径。例如,一个location /images的指令就能匹配站点/images路径的请求。还可以使用正则表达式来匹配复杂的URL。Location指令的一些常见选项包括try_files、proxy_pass、fastcgi_pass等。使用这些选项,我们可以根据需求配置站点的页面。 Root指令用于设置站点的根目录。例如,root /var/www/html可以将站点文件的默认存放路径设置为/var/www/html。对于一些需要访问静态文件的站点,设置Root指令可以更方便地读取静态文件,提高访问效率。 Alias指令也用于设置文件路径。不同于Root指令,Alias指令能够为特定路径设置不同的读取路径,而非设定整个站点的根目录。例如,alias /images/ /data/images/,访问/images/路径时,Nginx会自动映射到/data/images/路径。 正则表达式可以让我们更灵活地配置站点。在Nginx,用~或~*修饰location指令的URI参数,就可以开启正则表达式的匹配模式。在指令使用正则表达式,可以用来匹配更多的路径,而不单单是固定的路径。例如,location ~ \.(gif|jpg|jpeg)$ { … }表示nginx会匹配以.gif、.jpg、.jpeg结尾的URI。 总之,通过熟练掌握Nginx的Location、RootAlias和正则等指令,能够更好地配置和优化站点的性能和安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值