语法规则: location [=||*|^~] /uri/ { … }
符号 | 含义 | 备注 | |
---|---|---|---|
= | 精确匹配 | ||
^~ | uri以某个字符串开头 | nginx不对uri进行编码,如api/20%/name匹配"^~api/ /name" | |
~ | 区分大小写的正则匹配 | ||
~* | 不区分大小写的正则匹配 | ||
!~ | 区分大小写的正则不匹配 | ||
!~* | 不区分大小写的正则不匹配 | ||
/ | 通配符,任何请求都会匹配 |
多个location匹配顺序如下:
先匹配=,其次匹配^~,然后按照配置的先后顺序进行匹配,最后交给/通配符,一旦匹配则不在进行。
在实际使用中,至少定义如下三种规则:
####### 第一个规则必选(直接匹配网站根目录,通过域名访问网站比较频繁,这样会加速处理)
location =/ {
proxy_pass http:localhost:8080/index.do;
}
直接转发给后端tomcat了,也可以是一个静态页面
####### 第二个规则是处理静态文件
location ^~/static/ {
root /webroot/static/;
}
或
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
root /webroot/res/;
}
####### 第三个规则是匹配所有
location / {
proxy_pass http://localhost:8080/
}