NGINX的配置问题

坑一 . 静态文件服务器时:location root和alias的区别:

root与alias主要区别在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上:

  • root的处理结果是:root路径+location路径
  • alias的处理结果是:使用alias路径替换location路径
  • alias是一个目录别名的定义,root则是最上层目录的定义。
  • 是alias后面必须要用“/”结束,否则会找不到文件的。。。而root则可有可无~~

root实例:

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

说明:如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/t/a.html的文件。

alias实例(最后的/一定要带):

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

说明:如果一个请求的URI是/t/a.html时,web服务器将会返回服务器上的/www/root/html/new_t/a.html的文件。注意这里是new_t,因为alias会把location后面配置的路径丢弃掉,把当前匹配到的目录指向到指定的目录。

坑二 .NGINX location 在配置中的优先级

1.location表达式类型:

  • ~ 表示执行一个正则匹配,区分大小写
  • ~* 表示执行一个正则匹配,不区分大小写
  • ^~ 表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其他location。
  • = 进行普通字符精确匹配。也就是完全匹配。
  • @ 它定义一个命名的 location,使用在内部定向时,例如 error_page, try_files

2.location优先级说明

在nginx的location和配置中location的顺序没有太大关系。正location表达式的类型有关。相同类型的表达式,字符串长的会优先匹配。
以下是按优先级排列说明:

  • 等号类型(=)的优先级最高。一旦匹配成功,则不再查找其他匹配项。
  • ^~类型表达式。一旦匹配成功,则不再查找其他匹配项。
  • 正则表达式类型(~ ~*)的优先级次之。如果有多个location的正则能匹配的话,则使用正则表达式最长的那个。
  • 常规字符串匹配类型。按前缀匹配。
    在这里插入图片描述
发布了41 篇原创文章 · 获赞 14 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Yunwei_Zheng/article/details/104018807