您的位置 首页 php

5分钟搞懂nginx的location匹配规则

目录

  • 概述
  • location介绍
  • location指令语法
  • location配置实例解析
  • location常用场景实战
  • 禁止访问.sh后缀的文件实例
  • php7进阶到架构师相关阅读

概述

这是关于php进阶到架构之 Nginx进阶 学习的第 篇文章:5分钟搞懂nginx的location匹配规则

  • 第一篇:5分钟搞懂nginx的location匹配规则

location介绍

location指令语法

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

规则说明:

nginx匹配规则说明

多个location配置的匹配顺序:

  • 首先匹配:”=”
  • 其次匹配:”^~”
  • 再匹配:文件location 书写顺序
  • 若没有匹配到,最后把所有请求交给通配符(”/”)
  • 当有匹配成功时候,停止匹配,按当前匹配规则处理请求

当nginx收到一个请求后,

会截取请求的URI部份,

去搜索所有location指令中定义的URI匹配模式。

在server模块中可以定义多个location指令来匹配不同的url请求,

多个不同location配置的URI匹配模式,

总体的匹配原则是:先匹配普通字符串模式,再匹配正则模式。

只识别URI部份

location配置实例解析

 location = / {
   #规则A
}
location = /login {
   #规则B
}
location ^~ /static/ {
   #规则C
}
location ~ \.(gif|jpg|png|js|css)$ {
   #规则D
}
location ~* \.png$ {
   #规则E
}
location / {
   #规则F
}  

访问

匹配规则 A

访问

匹配规则 B

访问

匹配规则 F

访问

匹配规则 C

访问

匹配规则 D和规则 E,

但是 规则 D 顺序优先

规则 E不起作用

访问

满足条件的有规则C,D,E

但由于~^/static/优先级高,故匹配规则C

访问

匹配规则 E,而不会匹配规则 D,

因为规则 E 不区分大小写

访问

最终匹配到规则 F,因为以上规则都不匹配

location常用场景实战

实际使用中,至少有三个匹配规则定义,如下:

1.第一个必选规则:直接匹配网站根

通过域名访问网站首页比较频繁,

使用这个会加速处理

这里是直接转发给后端应用服务器了,

也可以是一个静态首页

 第一个必选规则
location = / {
    proxy_pass 
}  

第二个必选规则:处理静态文件请求

这是 nginx 作为 http 服务器的强项处理静态文件请求,

有两种配置模式,

目录匹配或后缀匹配,

任选其一或搭配使用

 location ^~ /static/ {
    root /webroot/static/;
}
location ~* \.(gif|jpg|jpeg|png|css|js|ico)$ {
    root /webroot/res/;
}  

第三个规则:通用规则

用来转发动态请求到后端应用服务器非静态文件请求就默认是动态请求,自己根据实际把握

 location / {
    proxy_pass 
}  

禁止访问.sh后缀的文件实例

 server{
......其他配置
location ~.*\.(sh)${
return 405;
}
}
  

表示当访问 “*.sh”的文件就会返回405错误

php7进阶到架构师相关阅读

最后,欢迎大家留言补充,讨论~~~

文章来源:智云一二三科技

文章标题:5分钟搞懂nginx的location匹配规则

文章地址:https://www.zhihuclub.com/150772.shtml

关于作者: 智云科技

热门文章

网站地图