Nginx Rewrite模块应用的几种场景
应用场景1——基于域名的跳转
公司旧域名www.accp.com,因业务需求有变更,需要使用新域名www.kgc.com代替
1.不能废除旧域名
2.从旧域名跳转到新域名,且保持其参数不变
部署环境
一台Linux服务器(192.168.142.130)
一台测试主机windows7
1,安装Nginx服务
[root@localhost~]#rpm-Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm #安装nginx官方源 [root@localhost~]#yuminstallnginx-y #yum安装nginx
2,修改nginx默认配置文件
[root@localhost~]#vim/etc/nginx/conf.d/default.conf##修改默认配置文件 server{ listen80; server_namewww.accp.com;##修改主机名 #charsetkoi8-r; access_log/var/log/nginx/www.accp.com-access.logmain;##开启日志服务
3,安装bind解析服务
[root@localhost~]#yuminstallbind-y
4,修改主配置文件(named.conf)
[root@localhost~]#vim/etc/named.conf options{ listen-onport53{any;};##监听所有 ... allow-query{any;};##允许所有
5,修改区域配置文件(named.rfc1912.zones)
[root@localhost~]#vim/etc/named.rfc1912.zones##配置区域配置文件 zone"accp.com"IN{ typemaster; file"accp.com.zone";##accp区域数据配置文件 allow-update{none;}; };
6,修改区域数据配置文件(accp.com.zone)
[root@localhost~]#cd/var/named/ [root@localhostnamed]#cp-pnamed.localhostaccp.com.zone##复制模板 [root@localhostnamed]#vimaccp.com.zone##修改区域配置文件 $TTL1D @INSOA@rname.invalid.( 1D;refresh 1H;retry 1W;expire 3H);minimum NS@ A127.0.0.1 wwwINA192.168.142.130##本机地址 [root@localhostnamed]#systemctlstartnamed##开启dns服务 [root@localhostnamed]#systemctlstopfirewalld.service##关闭防火墙 [root@localhostnamed]#setenforce0 [root@localhostnamed]#systemctlstartnginx##开启nginx服务
7,用测试机测试网页
8,修改配置文件,设置域名跳转
[root@localhostnamed]#vim/etc/nginx/conf.d/default.conf##修改配置文件 server{ listen80; server_namewww.accp.com; #charsetkoi8-r; access_log/var/log/nginx/www.accp.com-access.logmain; location/{ if($host="www.accp.com"){##匹配如果域名是老域名 rewrite^/(.*)$http://www.kgc.com/$1permanent;##则永久设置跳转新域名 } root/usr/share/nginx/html; indexindex.htmlindex.htm; }
9,添加新域名解析
[root@localhostnamed]#vim/etc/named.rfc1912.zones zone"kgc.com"IN{ typemaster; file"kgc.com.zone";##accp区域数据配置文件 allow-update{none;}; }; [root@localhostnamed]#cp-p/var/named/accp.com.zone/var/named/kgc.com.zone ##复制区域数据配置文件为kgc的数据配置文件 [root@localhostnamed]#systemctlrestartnamed##重启解析服务 [root@localhostnamed]#systemctlrestartnginx##重启nginx服务
10,用旧域名访问,查看网页跳转
11,旧域名后加上参数,查看跳转新域名时是否有参数
应用场景2——基于客户端IP访问跳转
公司业务版本上线,所有IP访问任何内容都显示一个固定维护页面,只有公司IP访问正常
1,修改Nginx默认配置文件
[root@localhost~]#cd/etc/nginx/conf.d/ [root@localhostconf.d]#vimdefault.conf server{ listen80; server_namewww.accp.com; #charsetkoi8-r; access_log/var/log/nginx/www.accp.com-access.logmain; #设置是否合法的IP标志 set$rewritetrue;##设置变量为真 #判断是否为合法的IP if($remote_addr="192.168.142.120"){ set$rewritefalse;##匹配合法IP,将变量设置为假,正常跳转页面 } #非法IP进行判断打上标记 if($rewrite=true){##匹配非法IP,跳转到main的网页 rewrite(.+)/main.html; } #匹配标记进行跳转站点 location=/main.html{##精确匹配 root/usr/share/nginx/html;##站点路径 } location/{ root/usr/share/nginx/html; indexindex.htmlindex.htm; }
2,创建非法IP站点及main的网页页面
[root@localhostconf.d]#cd/usr/share/nginx/html/##切换到站点中 [root@localhosthtml]#vimmain.html##编辑非法IP访问网页内容thisistestweb
[root@localhosthtml]#systemctlrestartnginx##重启Nginx服务
3,访问测试网页
应用场景3——基于旧,新域名跳转并加目录
将域名http://bbs.accp.com下面的发帖都跳转到http://www.accp.com/bbs且域名跳转后保持参数不变
1,修改Nginx默认配置文件
[root@localhost~]#cd/etc/nginx/conf.d/ [root@localhostconf.d]#vimdefault.conf##修改默认配置文件 server{ listen80; server_namebbs.accp.com;##修改服务名称 #charsetkoi8-r; access_log/var/log/nginx/www.accp.com-access.logmain; location/post{##用location匹配post目录 rewrite(.+)http://www.accp.com/bbs$1permanent;##永久重定向跳转 }
2,修改dns的区域数据配置文件(accp.com.zone)
[root@localhostconf.d]#cd/var/named/ [root@localhostnamed]#vimaccp.com.zone##修改区域数据配置文件 $TTL1D @INSOA@rname.invalid.( 0;serial 1D;refresh 1H;retry 1W;expire 3H);minimum NS@ A127.0.0.1 bbsINA192.168.142.130 [root@localhostnamed]#systemctlrestartnamed##重启解析服务 [root@localhostnamed]#systemctlrestartnginx##重启Nginx服务 [root@localhostnamed]#echo"nameserver192.168.142.130">/etc/resolv.conf ##将解析服务器地址放到本地解析配置文件中
3,测试网页
应用场景4——基于参数匹配的跳转
浏览器访问:http://www.accp.com/100-(100|200)-100.html跳转到http://www.accp.com页面
1,修改Nginx默认配置文件
[root@localhost~]#cd/etc/nginx/conf.d/ [root@localhostconf.d]#vimdefault.conf server{ listen80; server_namewww.accp.com; #charsetkoi8-r; access_log/var/log/nginx/www.accp.com-access.logmain; if($request_uri~^/100-(100|200)-(\d+).html$){ ##匹配正则开头为100-(100|200)-一次多次的整数html为结尾的 rewrite(.*)http://www.accp.compermanent;##永久重定向跳转到主页 }
2,修改dns区域数据配置文件
[root@localhostconf.d]#vim/var/named/accp.com.zone##修改区域数据配置文件 wwwINA192.168.142.130 [root@localhostconf.d]#systemctlrestartnamed##重启解析服务 [root@localhostconf.d]#systemctlrestartnginx##重启Nginx服务
3,测试网页
应用场景5——基于目录下所有PHP文件跳转
访问http://www.accp.com/upload/1.php跳转到首页
1,修改Nginx默认配置文件
[root@localhost~]#cd/etc/nginx/conf.d/ [root@localhostconf.d]#vimdefault.conf##修改默认配置文件 server{ listen80; server_namewww.accp.com; #charsetkoi8-r; access_log/var/log/nginx/www.accp.com-access.logmain; location~*/upload/.*\.php${##匹配不分大小写,匹配upload后零次或多次以.php为结尾的 rewrite(.+)http://www.accp.compermanent;##跳转到首页 } [root@localhostconf.d]#systemctlrestartnginx##重启Nginx服务
2,测试网页
应用场景6——基于最普通url请求的跳转,访问一个具体的页面跳转到首页
1,修改Nginx默认配置文件
[root@localhost~]#cd/etc/nginx/conf.d/ [root@localhostconf.d]#vimdefault.conf##修改Nginx默认配置文件 server{ listen80; server_namewww.accp.com; #charsetkoi8-r; access_log/var/log/nginx/www.accp.com-access.logmain; location~*^/abc/123.html{##匹配某一个特定的网页 rewrite(.+)http://www.accp.compermanent;##跳转到首页 } [root@localhostconf.d]#systemctlrestartnginx##重启Nginx服务
2,测试网页
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。