简单认识Nginx配置块location及rewrite

本文详细介绍了Nginx中location配置块的分类、匹配规则、优先级和实际应用,以及rewrite配置块的原理、跳转实现、执行顺序和常见应用实例,包括基于域名、IP、旧域名跳转、参数匹配和特定URL请求的URL重写与重定向。
摘要由CSDN通过智能技术生成


一、location配置块

1、分类

location可以分为三类:
(1)精准匹配:location = / {…}
(2)一般匹配:location / {…}
(3)正则匹配:location ~ / {…}

2、location 常用的匹配规则

= : 进行普通字符精确匹配,也就是完全匹配。 location = yudh www.kgc.com/yudh
^~ :表示普通字符匹配。使用前缀匹配。如果匹配成功,则不再匹配其它 location。
~ : 区分大小写的匹配。
~* : 不区分大小写的匹配。
!~ : 区分大小写的匹配取非。
!~* :不区分大小写的匹配取非。

3、location 优先级:

(1)精确匹配 = /…/…
(2)前缀匹配 ^~ /…/…
(3)按文件中顺序的正则匹配 ~ 或 ~* /…/…
(4)匹配不带任何修饰的前缀匹配 /…/…
(5)通用匹配 /

4.location 匹配流程

如果只有一种匹配满足,互不影响则直接走匹配到的location。
如果存在多个形式的location,则按以下流程匹配:
优先级:
首先是精确匹配,匹配到直接结束
其次是前缀匹配,如果筛选出来是前缀匹配,那就忽略正则匹配;
再次是正则匹配,多个符合,则在配置文件中靠前优先级的大
再次是一般匹配,最长匹配的优先
最后只有在精准、前缀、正则、一般 都没有匹配到的时候才会看通用匹配。

5、location实际使用规则

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

1、直接匹配网站根目录首页

通过域名访问网站首页比较频繁,使用这个会加速处理,比如说官网。可以是一个静态首页,也可以直接转发给后端应用服务器

location = / {
   
    root   html;
	index  index.html index.htm;
}

2、处理静态文件请求

这是nginx作为http服务器的强项,有两种配置模式,目录匹配或后缀匹配,任选其一或搭配使用

location ^~ /static/ {
   
    root /webroot/static/;
}

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

3、通用规则

比如用来转发带.php、.jsp后缀的动态请求到后端应用服务器,非静态文件请求就默认是动态请求

location / {
   
    proxy_pass http://tomcat_server;
}

二、rewrite配置块

1、简介

rewrite功能就是,使用nginx提供的全局变量或自己设置的变量,结合正则表达式和标记位实现URL重写以及重定向。
比如:更换域名后需要保持旧的域名能跳转到新的域名上、某网页发生改变需要跳转到新的页面、网站防盗链等等需求。

rewrite只能放在server{},location{},if{}中,并且默认只能对域名后边的除去传递的参数外的字符串起作用
例如 http://www.index.com/abc/bbs/index.php?a=1&b=2 只对/abc/bbs/index.php重写

2、rewrite跳转实现

Nginx:通过ngx_http_rewrite_module 模块支持URL重写、支持if条件判断,但不支持else
跳转:从一个 location跳转到另一个location,循环最多可以执行10次,超过后nginx将返回500错误
PCRE支持:perl兼容正则表达式的语法规则匹配
重写模块 set 指令:创建新的变量并设其值

3、rewrite 执行顺序

(1) 执行 server 块里面的 rewrite 指令。
(2) 执行 location 匹配。
(3) 执行选定的 location 中的 rewrite 指令。

4.rewrite 配置语法格式

语法格式:


                
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值