本文主要介绍Nginx重写跳转应用场景的详细讲解,通过示例代码非常详细的介绍,对大家的学习或者工作有一定的参考价值。有需要的朋友下面和边肖一起学习。
应用场景1——基于域名的跳转
公司旧域名Www.accp.com因业务需求变化,需要替换为www.kgc.com
。旧域名
不能废除,其参数不变。
实验环境
Linux服务器(192.168.13.144)
测试机器win7
1、安装Nginx服务
[root@localhost~]#rpm-Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm ##安装nginx官方源 警告:/var/tmp/rpm-tmp.vS0k20:头V4RSA/SHA1Signature,密钥ID7bd9bf62:NOKEY 准备中...#################################[100%] 正在升级/安装... 1:nginx-release-centos-7-0.el7.ngx#################################[100%] [root@localhost~]#yuminstallnginx-y##yum安装nginx2、修改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、安装绑定解析服务
[root@localhost~]#yuminstallbind-y4、修改主配置文件(named.conf)
[root@localhost~]#vim/etc/named.conf options{ listen-onport53{any;};##监听所有 listen-on-v6port53{::1;}; directory"/var/named"; dump-file"/var/named/data/cache_dump.db"; statistics-file"/var/named/data/named_stats.txt"; memstatistics-file"/var/named/data/named_mem_stats.txt"; recursing-file"/var/named/data/named.recursing"; secroots-file"/var/named/data/named.secroots"; allow-query{any;};##允许所有5、修改区域配置文件(名为.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.13.144##本机地址 [root@localhostnamed]#systemctlstartnamed##开启dns服务 [root@localhostnamed]#systemctlstopfirewalld.service##关闭防火墙 [root@localhostnamed]#setenforce0 [root@localhostnamed]#systemctlstartnginx##开启nginx服务 [root@localhostnamed]#netstat-ntap|grepnginx##查看端口 tcp000.0.0.0:800.0.0.0:*LISTEN4093/nginx:master7、用测试器测试网页
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.13.140"){ 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网站和主网页
[root@localhostconf.d]#cd/usr/share/nginx/html/##切换到站点中 [root@localhosthtml]#vimmain.html##编辑非法IP访问网页内容 <h1>thisistestweb</h1> [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.13.144 [root@localhostnamed]#systemctlrestartnamed##重启解析服务 [root@localhostnamed]#systemctlrestartnginx##重启Nginx服务 [root@localhostnamed]#echo"nameserver192.168.13.144">/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.13.144 [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.测试网页
这就是本文的全部内容。希望对大家的学习有帮助,支持我们。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)