nginx(location详细讲解)

location有定位的意思。根据uri来定位不同的部分。

语法:

location[=|~|~*|^~] patt {

}

= :表示精确匹配,这个优先级也是最高的。

^~ :表示uri以某个常规字符串开头,理解为匹配 url路径即可。nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。

~:表示区分大小写的正则匹配。

~*:表示不区分大小写的正则匹配(和上面的唯一区别就是大小写)!~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则 / 通用匹配,任何请求都会匹配到,默认匹配。

多个location配置的情况下匹配顺序为:

优先级=>^~>

说明:首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求

中括号可以不写任何参数,此时称为一般匹配。也可以写参数。

因此,大类可以分为3中。

Location=patt{}[精准匹配]

Location patt{}[一般匹配]

Location ~ patt{}[正则匹配]

location的匹配过程:

总结:location的命中过程是这样子的

1:先判断精准命中,如果命中,立即返回结果并结束解析过程。

2:判断普通命中,如果有多个命中,”记录”下来”最长”的命中结果(注意:记录但不是结束,最长的为准)

3:继续判断正则表达式的解析过程,按配置里的正则表达式 为准,由上到下开始匹配,一旦匹配成功1个,立即返回结果,并结束解析过程。

延伸分析:A:普通命中,顺序无所谓,是因为按命中的长短来确定的。B:正则命中,顺序有所谓,因为是从前往后命中的。

精准匹配

 

首先看有没有精准匹配,如果有,则停止匹配过程。

Location = patt {

         ConfigA

}

如果 $uri==patt,匹配成功,使用configA

举例说明:

location = / {

                   root   /var/www/html/;

                   index  index.htm index.html;

}

location  /  {

         Root /usr/location/nginx/html;

         Index index.html index.htm;

}

访问http://xxx.com/

定位流程是:

1、  精准匹配中“/”,得到index也为 index.htm.

2、  再次访问/index.htm,此次内部跳转uri已经是”/index.htm”,更目录为/usr/local/nginx/html

3、最终结果为,访问到了/usr/local/nginx/html/index.htm

正则匹配

location /  {

         root  /usr/local/nginx/html;

         index  index.html index.htm;

}

location ~ image {

         root  /var/www/image;

         index  index.html;

}

此时如果我们访问http://xx.com/image/logo.png

此时,”/” 与”/image/logo.png”匹配

同时,“image”正则与”image/logo.png”也能匹配,谁发挥作用?

正则表达式成果将会使用。

图片真正访问/var/www/image/logo.png

普通匹配


location / {

            root   /usr/local/nginx/html;

            index  index.html index.htm;

        }

location /foo {

           root /var/www/html;

            index index.html;

}

我们访问 http://xxx.com/foo

 对于uri “/foo”,   两个location的patt,都能匹配他们

即‘/’能从左前缀匹配‘/foo’, ‘/foo’也能左前缀匹配’/foo’,

此时, 真正访问 /var/www/html/index.html

原因:’/foo’匹配的更长,因此被使用

 

Nginx是一个高性能的HTTP和反向代理服务器。它可以处理大量的并发连接,而且在处理静态文件时,它的效率非常高。Nginx的配置非常灵活,可以通过配置文件来控制其行为。下面是对Nginx详细配置的讲解。 1. 配置文件的路径 Nginx的配置文件位于/etc/nginx/nginx.conf。在这个文件中,可以设置全局的配置,包括http、server和location等。 2. 配置文件的结构 Nginx的配置文件采用了块状结构。每个块都以一个左花括号“{”开始,以一个右花括号“}”结束。块中包含了一些指令,每个指令都以一个分号“;”结束。指令和块之间可以使用空格、制表符或换行符隔开。 3. 全局配置 在Nginx的配置文件中,可以设置一些全局配置,如: worker_processes 2; error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; 上面的配置指定了Nginx启动时使用的工作进程数量、错误日志文件的路径和进程ID文件的路径。 4. http配置 在Nginx的配置文件中,可以设置http块,包括一些http相关的配置,如: http { include /etc/nginx/mime.types; server_names_hash_bucket_size 64; access_log /var/log/nginx/access.log; server { listen 80; server_name example.com; location / { root /var/www/example.com; index index.html; } } } 上面的配置指定了mime.types文件的路径、服务器名的哈希桶的大小、访问日志文件的路径和一个server块。serve块中指定了监听的端口、服务器名和一个location块。location块中指定了请求的URL和返回的文件路径。 5. server配置 在Nginx的配置文件中,可以设置server块,包括一些server相关的配置,如: server { listen 80; server_name example.com; location / { root /var/www/example.com; index index.html; } } 上面的配置指定了监听的端口、服务器名和一个location块。location块中指定了请求的URL和返回的文件路径。 6. location配置 在Nginx的配置文件中,可以设置location块,包括一些location相关的配置,如: location / { root /var/www/example.com; index index.html; } 上面的配置指定了请求的URL和返回的文件路径。 7. 反向代理配置 在Nginx的配置文件中,可以设置反向代理服务器,如: server { listen 80; server_name example.com; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } } 上面的配置指定了监听的端口、服务器名和一个location块。location块中指定了请求的URL和反向代理服务器的地址,同时还设置了Host和X-Real-IP头部信息。 总结: 以上是对Nginx详细配置的讲解,包括了全局配置、http配置、server配置、location配置和反向代理配置等。Nginx的配置非常灵活,可以根据实际需求进行配置。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值