Nginx location配置

Nginx location配置

简介:nginx 作为静态资源服务器或反向代理服务器,其 location指令 实现了对请求的分发规则。

语法: location [=||*|^~|@] pattern { ... }

​ []作为可选项,其目的用于修饰后面的必选项pattern 。

选项的意义和优先顺序

  • 精确匹配 =
  • 前缀匹配 ^~(立刻停止后续的正则搜索)
  • 按文件中顺序的正则匹配 ~~*
  • 匹配不带任何修饰的前缀匹配。
   先精确匹配,没有则查找带有 ^~的前缀匹配,没有则进行正则匹配,最后才返回前缀匹配的结果(如果有的话)

备注:对于相同修饰符,但pattern不通,还遵循最长匹配原则

测试工具:curl

​ 为了快速的测试location的分发规则,我们可以借助curl 命令快速测试

案例一:server.location配置如下
server {
        listen       85;
		server_name localhost;
		location / {
			return 801; # 用这样的方式,可以方便的知道请求到了哪里
		}
		location /abc {
			return 802; 
		}
		location = /abc {
			return 805; 
		}
		location /abcde {
			return 803; 
		}
		location ^~ /abcd {
			return 806; 
		}
		location /abc/d {
			return 804; 
		}
		location ~ ^/ab[a-z]+ {
			return 702;
		}
    }
解析案例一
curl -I  localhost:85
  HTTP/1.1 801
curl -I  localhost:85/a
  HTTP/1.1 801
备注1:无选项[]修饰符pattern为 / 可匹配全部url但优先级比较低
curl -I  localhost:85/abc
  HTTP/1.1 805
备注2:url=/abc 可匹配L1-3,但L2为精确匹配优先级最高
curl -I  localhost:85/abc/a
HTTP/1.1 802
备注3:url=/abc/a 可匹配L1和L2同是无修饰符,但L2更长
curl -I  localhost:85/abc/d
HTTP/1.1 804
备注4:可匹配L1,L2,L6,但L6更长(更精确)

学习资源:nginx官方地址http://nginx.org/en/docs/

posted @ 2022-08-08 16:47  爱我-中华  阅读(398)  评论(0编辑  收藏  举报