URL_rewrite介绍
· rewrite模块(ngx_http_rewrite_moduke)
· Rewrite仅仅是Nginx服务器提供的一个重要功能。几乎是所有的web产品必备技能,用于实现 URL重写。URL重写是非常有用的功能,比如它可以在我们在改变网站结构后,不需要客户端修改原来的书签,也不需要其他网站修改对我们网站的友情链接,还可以在一定程度上提高网站的安全性,能够让我们的网站显得更专业.
· Nginx服务器Rewrite功能的实现是依赖于PCRE(perl Compatible Regular Experssion.Perl兼容的正则表达式)的支持,所以在编译安装Nginx之前,需要安装PCRE库.
应用场景
·域名变更(京东 www.360buy–>www.jd.com)
·用户跳转(从某个连接跳到另一个连接)
· 伪静态场景(便于CDN缓存动态页面数据)
域名变更:
京东的原域名为http://www.360buy.com,新域名为http://www.jd.com,京东在推出新域名的同时,不能将老域名干掉不使用,因为仍有很多老用户并不知道新域名,如果干掉了老域名,那么在新域名推广的时间损失的老用户和人民币也是很可怕的。所以就可以使用域名重写,这样用户在访问http://www.360buy.com时网页会自动跳转到http://www.jd.com。这样就平稳的从老域名过渡到新域名,避免了老用户和人民币的流失。
用户跳转:
老链接已经没了,已经变成了新链接,那怎么能引导用户呢?用户是不知道的。作为一个运维人员,永远不要要求用户去做什么,用户不习惯就不来访问了,不访问了还怎么赚钱!这样直接从老链接跳转到新连接即可,用户是感觉不到变化的。
伪静态场景:
CDN缓存的是静态数据,但是我们想让他也缓存动态数据,这样就完美了。但是按照常理是不可能的,但我们还想这样做,可以将动态页面做成静态页面来缓存,也就是伪静态,便于CDN存储。
URL重写原理
1) 首先用户向Nginx发起请求
2) Nginx接收到请求,重写URL,将新的URL返回给用户的浏览器
3) 用户的浏览器使用新的URL去访问业务服务器
4) 业务服务器将数据返回给用户的浏览器
URL rewrite实现
URL模块语法
1) set 设置变量
2) if 负责语句中的判断
3) return 返回返回值或URL
4) break 终止后续的rewrite规则
5) rewrite 重定向URL
Rewrite规则相关指令
set指令 自定义变量
Syntax(语法)
set $variable value;
Default:
—
Context (作用域)
server,location,if
·将http://www.baidu.com 重写为http://www.baidu.com/zhouxiongxiong
代码:
location / {
set $name zhouxiongxiong
rewrite ^(.