编程网

nginx location指令详解案例

location匹配命令

=     进行普通字符精确匹配

^~    ^~表示普通字符匹配,如果此location块匹配,只匹配该块,不匹配别的location块,一般用来匹配目录。

~     表示执行一个正则匹配,区分大小写

~*    表示执行一个正则匹配,不区分大小写

!~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则

/     通用匹配,任何请求都会匹配到。注意:只有当所有其他location块未能提供匹配时,才会使用此块。

location 匹配的优先级(注意:与location在配置文件中的顺序无关)

= 精确匹配会第一个被处理。如果发现精确匹配,nginx停止搜索其他匹配。

普通字符匹配,正则表达式规则和长的块规则将被优先和查询匹配,也就是说如果该项匹配还需去看有没有正则表达式匹配和更长的匹配。

^~ 表示只匹配该规则,匹配成功 nginx 停止搜索其他匹配,否则nginx会继续处理其他location块。

最后匹配理带有"~"和"~*"的指令,如果找到相应的匹配,则nginx停止搜索其他匹配;当没有正则表达式或者没有正则表达式被匹配的情况下,那么匹配程度最高的逐字匹配指令会被使用。

#直接匹配网站根,通过域名访问网站首页比较频繁,使用这个会加速处理,官网如是说。
#这里是直接转发给后端应用服务器了,也可以是一个静态首页
# 第一个必选规则
location = / {
    proxy_pass http://api:8080/index
}

location =/favicon.ico {
    root /webroot/static;
    #access_log off;
}
 
# 第二个必选规则是处理静态文件请求,这是nginx作为http服务器的强项
# 有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用
location ^~ /static/ {                              //以xx开头
    root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {     //以xx结尾
    root /webroot/res/;
}
 
#第三个规则就是通用规则,用来转发动态请求到后端应用服务器
#非静态文件请求就默认是动态请求,自己根据实际把握
location / {
    proxy_pass http://api:8080/
}
热门内容