温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Nginx服务——rewrite模块应用实战

发布时间:2020-07-23 12:30:55 来源:网络 阅读:427 作者:qq5d47f509174fe 栏目:系统运维

Nginx服务——rewrite模块应用实战

Demo 1:基于域名的跳转

应用场景: 原域名即将不可用,现用新的域名代替

理论结果: 输入旧域名,自动跳转到新域名,且其它参数不变

DNS方向

[root@localhost ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm //yum库升级 获取http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm 警告:/var/tmp/rpm-tmp.zvmFF2: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY 准备中... ################################# [100%] 正在升级/安装... 1:nginx-release-centos-7-0.el7.ngx ################################# [100%] [root@localhost ~]# yum install nginx -y #安装nginx服务 [root@localhost ~]# yum install bind -y [root@localhost ~]# vim /etc/named.conf ###按照下面进行修改 options { listen-on port 53 { any; }; #监听所有的53端口 listen-on-v6 port 53 { ::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; }; #允许所有通过 [root@localhost ~]# vim /etc/named.rfc1912.zones ####添加如下 zone "test.com" IN { type master; file "named.test"; }; [root@localhost ~]# cp -p /var/named/named.localhost /var/named/named.test [root@localhost ~]# vim /var/named/named.test #####按照下面进行修改 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 www IN A 192.168.142.128 [root@localhost ~]# systemctl start named [root@localhost ~]# systemctl stop firewalld.service [root@localhost ~]# setenforce 0

Nginx方向

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ####按下面进行更改 server { listen 80; server_name www.test.com; #指定域名 charset utf-8; #指定字符集 access_log /var/log/nginx/test.com-access.log main; #指定access日志文件位置 [root@localhost ~]# systemctl start nginx [root@localhost ~]# netstat -atnp | grep nginx tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4028/nginx: master

此时,能够对原域名进行正常的访问

Nginx服务——rewrite模块应用实战

为了满足实验要求,现对新域名添加dns区域

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf location / { ####在location后面添加下面两行 if ($host = 'www.test.com') { rewrite ^/(.*)$ http://www.yun.com/$1 permanent; } [root@localhost ~]# vim /etc/named.rfc1912.zones ###为新域名增添新的dns区域 zone "yun.com" IN { type master; file "named.yun"; }; [root@localhost ~]# cp -p /var/named/named.test /var/named/named.yun [root@localhost ~]# systemctl restart named [root@localhost ~]# systemctl restart nginx

实验成功,成功从旧域名自动跳转到新域名

Nginx服务——rewrite模块应用实战

Demo 2:基于客户端IP跳转

应用场景: 网站维护时仅有个别用户能够正常进行访问,其余用户仅能访问维护页面

理论结果: 一台客户机进行访问时自动进行IP比对,按表进行分类

DNS方向

同Demo 1,不用进行改变。

Nginx方向

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ####按下面进行添加 location / { root /usr/share/nginx/html; index index.html index.htm; } set $ip true; #设定变量为true if ($remote_addr = "192.168.142.129") { #匹配IP地址为“192.168.142.129”时 set $ip false; #变量变更为false } if ($ip = true) { #匹配变量为true时 rewrite ^/(.*)$ /weihu.html; #跳转网页到维护页面 } location = /weihu.html { #匹配到维护页面时 root /usr/share/nginx/html; #指定网页站点 } [root@localhost ~]# systemctl restart nginx

此时,根据不同的ip地址,将会浏览到不同的页面(正常页面/维护页面)
Nginx服务——rewrite模块应用实战

Nginx服务——rewrite模块应用实战

Demo 3:基于旧、新域名跳转并添加目录

应用场景: 将域名http://bbs.test.com下面的发帖都跳转到 http://www.test.com/bbs,且域名跳转后保持参数 不变

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ###按照下面进行修改,在location段下面添加 location /new { # if ($request_uri ~* ^/new) { rewrite /?(.*) http://www.test.com/bbs/$1 permanent; } [root@localhost ~]# systemctl restart nginx

Nginx服务——rewrite模块应用实战

Demo 4:基于参数匹配跳转到指定页面

应用场景: 用户在输入域名后,误输入了全为数字的错误页面,应用后将自动跳转回指定页面

理论结果: 基于正则表达式的选择

DNS方向

同上面所有,无需进行更改

Nginx方向

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ###按照下面进行修改,在location段下面添加 if ($request_uri ~* ^/(\d*).html$) { #匹配以所有数字结尾的html文件 rewrite (.*) http://www.test.com permanent; #匹配零字或多字跳转到网站主页 } [root@localhost ~]# systemctl restart nginx

此时,在域名后添加一段数字组成的html网页将自动跳转回主页。例:http://www.test.com/123456.htmlhttp://www.test.com/

Nginx服务——rewrite模块应用实战

Demo 5:基于PHP文件、具体页面跳转回首页

基于PHP文件

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ###按照下面进行修改 ##location段后添加 location ~* /upload/(.+)\.php$ { #基于全部php文件 rewrite (.*) http://www.test.com permanent; } [root@localhost ~]# systemctl restart nginx

没啥可说的,以php的文件均会自动跳转回首页

Nginx服务——rewrite模块应用实战
基于具体html页面

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ###按照下面进行修改 ##location段后添加 location ~* /test.html$ { #基于具体的html网页 rewrite (.*) http://www.test.com permanent; } [root@localhost ~]# systemctl restart nginx

同上,访问某个具体网页文件就会跳转回首页

Nginx服务——rewrite模块应用实战

基于任意的html页面

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf ###按照下面进行修改 ##location /后面添加 if ($request_uri ~* ^/new/(.+)\.html$) { #匹配到任意html页面 rewrite (.*) http://www.test.com permanent; #跳转到首页 } [root@localhost ~]# systemctl restart nginx

此时,访问任意的html格式的网页将自动跳转到首页

Nginx服务——rewrite模块应用实战

感谢阅读!!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI