1,location 正则
~ 表示一个正则匹配, 区分大小写
~* 表示一个正则匹配, 不区分大小写
^~ 表示普通字符匹配, 一般用来匹配目录
= 表示普通字符精确匹配
@ 定义一个自命名的 location, 用来在内部重定向, 例如 error_page, try_files
2,location 匹配的优先级
(1)location 匹配的优先级与 location 在配置文件中的顺序无关
(2) 精确匹配 ( = ), 首先处理精确匹配, 如果匹配上, 就停止搜索其他匹配
(3) 普通字符匹配 ( ^~ ), 越精确匹配, 优先级越高, 如果匹配上, 停止搜索匹配
(4) 正则表达式匹配, 匹配定义的内容
(5) 如果第 4 条规则产生匹配的话, 就使用该结果, 否则, 使用第 3 条规则的结果
例 1: 基本匹配
- location = / {
- # 只匹配 "/"
- [ configuration A ]
- }
- location / {
- # 匹配以 "/" 开头的请求, 即匹配所有
- # 但精确匹配或正则匹配会优先匹配
- [ configuration B ]
- }
- location ^~ /images/ {
- # 匹配以 /images/ 开头的请求, 并停止其他 location 匹配
- [ configuration C ]
- }
- location ~* .(gif|jpg|jpeg)$ {
- # 匹配以 gif, jpg, 或者 jpeg 结尾的请求
- [ configuration D ]
- }
/ 符合 A
/documents/document.html 符合 B
/images/1.gif 符合 C
/documents/1.jpg 符合 D
例 2:@location
- error_page 404 = @fetch;
- location @fetch(
- proxy_pass http://fetch;
- )
参考文章: http://www.nginx.cn/115.html
来源: http://www.bubuko.com/infodetail-2635744.html