Rewrite功功能是Nginx做事器供应的一个主要功能。险些是所有的web产品必备技能,用于实现URL重写。URL重写是非常有用的功能,比如它可以在我们在改变网站构造后,不须要客户端修正原来的书签,也不须要其他网站修正对我们网站的交情链接,还可以在一定程度长进步网站的安全性,能够让我们的网站显得更专业。
2 运用处景域名变更 (京东)
用户跳转 (从某个连接跳到另一个连接)
伪静态场景 (便于CDN缓存动态页面数据)
3 URL重写事理4 URL重写
URL 模块语法
set 设置变量if 卖力语句中的判断return 返回返回值或URLbreak 终止后续的rewrite规则rewrite 重定向URLset指令 自定义变量
Syntax: set $variable value;
Default: —
Context: server, location, if
将http://www.a.com 重写为 http://www.a.com/hellolocation / { set $name hello; rewrite ^(.)$ http://www.a.com/$name; }重启nginx做事测试机打开浏览器可以看到页面跳转
if 指令 卖力判断
Syntax: if (condition) { ... }
Default: —
Context: server, location
条件匹配
#模糊匹配 ~匹配 !~不匹配 ~ 不区分大小写的匹配
#精确匹配 = !=
location / { root html; index index.html index.htm; if ($http_user_agent ~ 'Firefox') { return 403; } }重启nginx客户机打开火狐浏览器测试,看看能否看到403
return 指令 定义返回数据
Syntax: return code [text];
return code URL;
return URL;
Default: —
Context: server, location, if
location / { root html; index index.html index.htm; if ($http_user_agent ~ 'Firefox') { return 403; } }
rewrite指令 实现重写url
rewrite [flag];
关键字 正则 替代内容 flag标记
flag:
last #本条规则匹配完成后,连续向下匹配新的location URI规则break #本条规则匹配完成即终止,不再匹配后面的任何规则redirect #返回302临时重定向,浏览器地址会显示跳转后的URL地址permanent #返回301永久重定向,浏览器地址栏会显示跳转后的URL地址permanent标志:永久重定向
域名跳转www.a.com 重写为 www.b.comserver { listen 80; server_name www.a.com; location / { rewrite ^/$ http://www.b.com permanent; }}
redirect标志:临时重定向
域名跳转www.a.com 重写为 www.b.comserver { listen 80; server_name www.a.com; location / { rewrite ^/$ http://www.b.com redirect; }}
break标志: 类似临时重定向
域名跳转www.a.com 重写为 www.b.comserver { listen 80; server_name www.a.com; location / { rewrite ^/$ http://www.b.com break; }}
last标志:
url重写后,立时发起一个新的要求,再次进入server块,重试location匹配,超过10次匹配不到报500缺点,地址栏url不变
last 一样平常涌如今server或if中
根据用户浏览看重写访问目录
如果是firefox浏览器 就将 http://192.168.11.16/$URI 重写为 http://192.168.11.16/firefox/$URI实现 步骤1)URL重写2)要求转给本机locationlocation / {.....if ($http_user_agent ~ 'firefox'){ #^ 以什么开头 ^a #$ 以什么结尾 c$ #. 除了回车以外的任意一个字符 # 前面的字符可以涌现多次或者不涌现 #更多内容看正则表达式 rewrite ^(.)$ /firefox/$1 last; } location /firefox { root html ; index index.html; }}[root@localhost html]# pwd/usr/local/nginx/html[root@localhost html]# mkdir firefox[root@localhost html]# echo firefox > firefox/index.html[root@localhost html]# killall nginx[root@localhost html]# /usr/local/nginx/sbin/nginx 客户机浏览器测试
总结
URL重写先容
运用处景
URL重写事理
URL重写实现
重点:什么是URL重写,URL重写的浸染及实现
难点:URL重写如何实现,各标志的含义