基于Nginx的中间件架构----rewrite规则

在nginx的rewrite规则里面,可以实现对URL进行重写以及对匹配的URL进行重定向,它的匹配是依赖于正则表达式。

使用场景:
1.URL访问调转,支持开发设计。
比如说在wordpress或者Discuz这种框架性的结构里面,常常需要用到在前端进行对应的nginx rewrite规则,以匹配后端的对应接口设计。

另外可是实现一些兼容性的支持。比如在发布一些新的版本或者网站进行升级的时候,我们常常需要去兼容一些老的版本或者老的用户,那么这个时候我们需要去提供一个老的路径让用户同样能访问到,这个时候需要用到 nginx 来作兼容性支持。
如果URL展示的过于复杂,这样的话其实对于页面展示路径就是一大长串,我们可以用rewrite规则将URL进行精简和缩略,这样展示效果也会非常好。

2.SEO优化。
对于Google,百度等搜索引擎的排名来讲,是依赖于URL的路径的,如果我们的路径过于复杂,不符合搜索引擎的搜索规则的话,就会对搜索引擎的录入造成一些问题。所以这个时候就依赖于nginx基于后端接口来进行对应的伪静态的改写,以符合搜索引擎的搜索规范。

3.维护。
有时候需要将后台进行临时性的维护,这个时候要挂维护页面,或者我们需要将一部分的功能进行流量的转发,转发到其他的页面里面去。

4.安全。
我们使用rewrite规则可以实现伪静态,将我们真实的,动态的页面进行伪装,然后让黑客进行访问抓取的时候感觉不出来这是一个明显的动态页面。

配置语法
nginx的rewrite配置语法依赖于rewrite moudle这个模块。

Syntax : rewrite regex replacement [flag];
Default : -
Context : server , localtion , if

regex:
正则表达式,用于匹配需要需要改写的url或路径。
replacement:
目标URL或路径。
rewrite规则只支持在server , localtion或if的判断语句里面。
flag:
标识符。
last : 停止rewrite检测。
break : 停止rewrite检测。
redirect : 返回302临时重定向,地址栏会显示调转后的地址 ( 当用户来访问的时候匹配到这个规则,对应临时的返回给用户,如果用户下次再来访问的时候,同样还是要经过服务端,服务端再返回临时性的重定向 )。
permanent: 返回301永久重定向,地址栏会显示调转后的地址 ( 客户端在收到对应的请求以后,如果加了对应的返回头信息,除非自己清零缓存,不然它的请求将永久重定向到另外一个地址上去 )。

永久重定向和临时重定向的区别:
永久重定向:客户端会永久保留重定向的这组结果,我们去访问这个路径以后,浏览器会自动重定向到这个地址去,而不会对后端的服务器再发起请求。
临时重定向:经过重定向之后,客户端下次还是会去向服务器发起请求。

配置实例:

rewrite ^(.*)$ /page/maintain.html break;

上面这个配置的意思是:匹配所有的请求,并将其重定向到对应的page目录下的maintain.html里面,这就是一个维护页面,break就是标识符。

Last modification:November 29th, 2018 at 11:04 am
If you think my article is useful to you, please feel free to appreciate

Leave a Comment