nginx location语法

nginx是除了apache之外的第二大服务器,由于其良好的性能,被越来越多的大公司采用,nginx的配置中,主要通过location来配置不同的请求代理,本文主要介绍localtion部分的语法。

语法

location [=|~|~*|^~|@] /uri/ { … }

[]内为可选的匹配类型,{}内是对匹配的url如何处理

匹配类型

  • ~ 正则匹配

  • ~* 正则匹配。不区分大小写

  • ^~ 普通匹配,发现匹配则不再匹配正则

  • = 严格匹配

  • @

  • 无前缀

匹配优先级

  1. 先匹配非正则location,在匹配正则location

  2. 非正则location的匹配原则是 “最大前缀” ,即url从第一个字符开始,选择匹配数量最多的location

  3. 非正则location和正则location之间的规则是,得到非正则的最大前缀匹配结果后,如果匹配类型为”^~”,则该结果即为最终匹配结果;其它类型,则继续搜索正则location,如果有符合的正则location,则正则location为最终匹配结果。

  4. 正则location的匹配原则是按照逻辑顺序,即配置文件中靠前的location先匹配,若发现匹配项,则不再继续匹配

  5. = 进行严格匹配,请求的url必须与location中的完全一致

分发请求

  • proxy_pass
    将请求转发到指定端口

  • root
    请求root目录下的静态文件,可以通过index指定index文件

  • rewirte
    重定向请求,语法为”rewrite 正则表达式 url”,其中,正则表达式的子句可以在取代url中对应的部分,只能对域名后边的除去传递的参数外的字符串起作用

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
location /a/ {

proxy_pass http://localhost:8080; #(1)
}

location ~^ /a/b/c/ {

proxy_pass http://localhost:8080; #(2)
}

location /a/c/ {

proxy_pass http://localhost:8080; #(3)
}

location ^ /a/c/* {

root /root/web/ #(4)
index index.html
}

location = /a/b/d/ {

rewrite ^(/a/(.*)/d)$ http://xxx.com/site/$1/x2; #(5)
}

location = / {

rewrite ^(.*)$ http://xxx.com/index.html #(6)
}

location / {

root /root/web/ #(7)
index index.html
}
Song wechat
扫一扫,关注微信公众号,订阅我的博客
扫码领红包,支持走一波