目录
一、location配置块详解
1.location 大致分为三类
-
精准匹配:location = / { ... }
-
一般匹配:location / { ... }
-
正则匹配:location ~ / { ... }
2.location 常用的匹配规则
= | 使用普通字符精确匹配(完全匹配) |
---|---|
~ | 区分大小写的匹配(可用正则表达式) |
~* | 不区分大小写的匹配(可用正则表达式) |
^~ | 前缀匹配(即路径匹配到开头包含的后不再继续向更深的路径匹配) |
!~ | 取反匹配,区分大小写 |
!~* | 取反匹配,不区分大小写 |
3.location 匹配的优先级
(1)精确匹配 = /.../...
(2)前缀匹配 ^~ /.../...
(3)正则匹配 ~ 或 ~* /.../...
(4)一般前缀匹配 /.../...
(5)通用匹配 /
4.location 匹配流程
如果只有一种匹配满足,互不影响则直接走匹配到的location。
如果存在多个形式的location,则按以下流程匹配:
(1)精确匹配成功,直接走精确;
(2)没有就看筛选出来的是前缀匹配还是一般匹配**(比满足的路径长度)**;
——> 如果是一般匹配,就看有没有正则匹配,有正则,正则高;
——> 正则匹配多个符合,则在配置文件中靠前优先级的大。
——> 如果筛选出来是前缀匹配,那就忽略正则匹配;
(3)只有在精准、前缀、正则、一般 都没有匹配到的时候才会看通用匹配。
5.location 的实际使用
实际网站使用中,至少有三个匹配规则定义:
(1)直接匹配网站根目录首页
通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。可以是一个静态首页,也可以直接转发给后端应用服务器。
location = /index.html {
root html;
index index.html index.htm;
}
(2)处理静态文件请求
这是nginx作为http服务器的强项有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用。
location ^~ /static/ {
root /webroot/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}
(3)通用规则
比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器,非静态文件请求就默认是动态请求
location / {
proxy_pass http://tomcat_server;
}