Nginx Location配置总结

语法

1
location [ = | ^~ | ~ | ~* ] uri { ... }

可用于server
= 精确匹配
^~ 前缀匹配
~ 正则匹配
~* 正则匹配, 不区分大小写
/ 默认匹配, 其他location匹配不到时

匹配优先级 精确匹配 > 前缀匹配 > 正则匹配 > /
优先级较高的匹配到时, 则不再进行后续匹配.

uri 是解码后的路径, 例如匹配以/a/20%/b开头, ^~ /a/ /b

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
location = /exact { return 200 "exact"; }
# /exact 匹配
# /exact/ 不必配

location ^~ /start { return 200 "start"; }
# /start 匹配
# /startxxx 匹配
# /x/start 不必配

location ~ abc { return 200 "abc"; }
# /xxxabcxxx 匹配
# /xxxaBcxxx 不匹配

location ~* def { return 200 "def"; }
# /xxxdefxxx 匹配
# /xxxdEfxxx 匹配

# uri路径中写解码后的值
location = '/a b' { return 200 "uri with space"; }
# /a%20b 匹配
# /a b 匹配

例子

  1. 匹配以/api/开头的url转发到http://127.0.0.1:8080

    1
    2
    3
    4
    5
    6
    7
    8
    location ^~ /api/ {
    expires -1;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Cookie $http_cookie;
    proxy_pass http://127.0.0.1:8080;
    }
  2. 匹配匹配.git, .jpg等后缀的静态文件, 不区分大小写

    1
    2
    3
    location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root static;
    }
0%