location 匹配

最后更新于:2022-04-02 02:54:20

[TOC] ## root与alias区别 ``` location ^~ /admin { alias /var/www/admin/; index regist.html; } location / { root /data/html/; index index.html index.html; } ``` - root的处理结果是:root路径+location路径 - alias的处理结果是:使用alias路径替换location路径 - alias是一个目录别名的定义,root则是最上层目录的定义 - 重要的区别是alias后面必须要用“/”结束,而root不强制 ### root与alias 后跟 "/" 的区别 ``` location ^~ /dev-popularize/ { # 必须有 dev-popularize 这个目录,静态资源文件都在这个目录下 root /Users/wxq/Desktop/shounaer/dist; # 不需要有 dev-popularize 这个目录,静态资源文件直接放在dist目录下 root /Users/wxq/Desktop/shounaer/dist/; # 则 dist 目录下,无论有没有dev-popularize 都不行,会报 403 alias /Users/wxq/Desktop/shounaer/dist; # 则 dist 目录下,直接放你的静态资源文件就行 # alias /Users/wxq/Desktop/shounaer/dist/; index regist.html; } ``` ## location 开头 语法规则: `location \[ = | ~ | ~ \* | ^~ \] /uri/ { … }` ### 以 = 开头,表示精确匹配 ``` # 精确匹配,必须是127.0.0.1/ location = / { #规则A } # 精确匹配,必须是127.0.0.1/login location = /login { #规则B } ``` ### 以 ^~ 开头,表示uri以某个常规字符串开头 nginx不对url做编码 ``` ## 非精确匹配,并且不区分大小写,比如127.0.0.1/static/js. location ^~ /static/ { #规则C } ``` ### ~ 开头,表示区分大小写的正则匹配 ``` location ~ \.(gif|jpg|png|js|css)$ { #规则D } ``` ### ~* 开头,表示不区分大小写的正则匹配 ``` ## 不区分大小写,匹配.png结尾的 location ~* \.png$ { #规则E } ``` ### !~ 和!~* 分别为区分大小写不匹配及不区分大小写不匹配 的正则 ``` ## 区分大小写,匹配不以.xhtml结尾的 location !~ \.xhtml$ { #规则F } location !~* \.xhtml$ { #规则G } ``` ### / 通用匹配,任何请求都会匹配到 ``` location / { #规则H } ``` ## 匹配顺序 首先匹配= ; 其次匹配^~; 再其次是按文件中顺序的正则匹配; 最后是交给 / 通用匹配; 当有匹配成功时候,停止匹配,按当前匹配规则处理请求
';