千家信息网

Nginx——rewrite应用实例

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,Nginx--rewrite应用实例应用实例一、基于域名的跳转现在公司旧域名 www.old.com 有业务需求有变更,需要使用新 域名 www.new.com 代替,但是旧域名不能废除,需要跳转到新
千家信息网最后更新 2025年12月02日Nginx——rewrite应用实例

Nginx--rewrite应用实例

应用实例一、基于域名的跳转

现在公司旧域名 www.old.com 有业务需求有变更,需要使用新 域名 www.new.com 代替,但是旧域名不能废除,需要跳转到新域名上,而且后面的参 数保持不变。

1、安装Nginx服务

[root@localhost ~]# rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm                                    //安装nginx官方源警告:/var/tmp/rpm-tmp.vS0k20: 头V4 RSA/SHA1 Signature, 密钥 ID 7bd9bf62: NOKEY准备中...                          ################################# [100%]正在升级/安装...     1:nginx-release-centos-7-0.el7.ngx ################################# [100%][root@localhost ~]# yum install nginx -y                                   //yum安装nginx

2、修改Nginx配置文件

[root@localhost ~]# vim /etc/nginx/conf.d/default.conf                       //修改默认配置文件server {        listen       80;        server_name  www.accp.com;                           //修改主机名        #charset koi8-r;        access_log  /var/log/nginx/www.accp.com-access.log  main;              //开启日志服务

3、安装DNS域名解析服务

[root@localhost ~]# yum install bind -y

4、修改主配置文件

[root@localhost ~]# vim /etc/named.conf options {                                listen-on port 53 { any; };                        //监听所有地址                                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; };                                //允许所有

5、修改区域配置文件

[root@localhost ~]# vim /etc/named.rfc1912.zones           //配置区域配置文件zone "accp.com" IN {                                type master;                                file "accp.com.zone";                                                   allow-update { none; };};

6、修改区域数据配置文件

[root@localhost ~]# cd /var/named/  [root@localhost named]# cp -p named.localhost accp.com.zone//复制区域数据配置文件模板[root@localhost named]# vim accp.com.zone           //修改区域配置文件$TTL 1D@       IN SOA  @ rname.invalid. (                                                                        1D      ; refresh                                                                        1H      ; retry                                                                        1W      ; expire                                                                        3H )    ; minimum                                NS      @                                A       127.0.0.1www IN  A       192.168.131.133              //本机地址[root@localhost named]# systemctl start named           //开启dns服务[root@localhost named]# systemctl stop firewalld.service             //关闭防火墙[root@localhost named]# setenforce 0[root@localhost named]# systemctl start nginx           //开启nginx服务[root@localhost named]# netstat -ntap | grep nginx              //查看端口tcp   0    0 0.0.0.0:80      0.0.0.0:*       LISTEN   4093/nginx: master 

7、将测试机dns解析地址设为虚拟机地址,并使用测试机测试网页

8、修改配置文件,设置域名跳转

[root@localhost named]# vim /etc/nginx/conf.d/default.conf  ##修改配置文件server {        listen       80;        server_name  www.old.com;        #charset koi8-r;        access_log  /var/log/nginx/www.old.com-access.log  main;        location / {                if ($host = "www.old.com"){               //匹配如果是老域名                                rewrite ^/(.*)$ http://www.new.com/$1 permanent;                             //则永久设置跳转新域名                }                root   /usr/share/nginx/html;                index  index.html index.htm;        }

9,在DNS配置文件中添加新域名解析

[root@localhost named]# vim /etc/named.rfc1912.zones zone "kgc.com" IN {                                type master;                                file "kgc.com.zone";                                             allow-update { none; };};[root@localhost named]# cp -p /var/named/accp.com.zone /var/named/kgc.com.zone//将原有区域数据配置文件复制为kgc.com的区域数据配置文件[root@localhost named]# systemctl restart named           //重启dns解析服务[root@localhost named]# systemctl restart nginx             //重启nginx服务

10、用旧域名访问,查看网页是否跳转新的域名

11、旧域名后加上参数,查看跳转新域名时是否依旧有参数

应用实例二、 基于客户端 IP 访问跳转

例如今天公司业务版本上线,所有IP 访问任何内容都显示一个固定维护页面,只有公司 IP :192.168.131.128访问正常。

1、修改默认配置文件

[root@localhost ~]# cd /etc/nginx/conf.d/[root@localhost conf.d]# vim default.conf server {        listen       80;        server_name  www.accp.com;        #charset koi8-r;        access_log  /var/log/nginx/www.accp.com-access.log  main;        //设置是否允许访问的IP标志        set $rewrite true;                  //设置变量为真        //判断是否为允许访问的IP        if ($remote_addr = "192.168.131.128"){                set $rewrite false;            //匹配合法IP,将变量设置为假,正常跳转页面        }        //不允许访问的IP进行判断打上标记        if ($rewrite = true){                       //匹配非法IP,跳转到维护网页                rewrite (.+) /main.html;        }        #匹配标记进行跳转站点        location = /main.html {                      //精确匹配                root /usr/share/nginx/html;        //站点路径        }        location / {                root   /usr/share/nginx/html;                index  index.html index.htm;        }  

2、创建不允许访问的IP站点及维护网页页面

[root@localhost conf.d]# cd /usr/share/nginx/html/          //切换到站点中[root@localhost html]# vim main.html                              //编辑非法IP访问网页内容

this is test web

[root@localhost html]# systemctl restart nginx //重启Nginx服务

3、使用不允许访问IP访问时弹出的页面

4、合法IP访问时能访问到的页面

应用实例三、 基于旧域名跳转到新域名后面加目录

例如现在访问的是 http://bbs.accp.com ,现在需要将这个域名下面的发帖都跳转到 http://www.accp.com/bbs ,注意保持域名跳转 后的参数不变。

1、修改Nginx默认配置文件

[root@localhost ~]# cd /etc/nginx/conf.d/[root@localhost conf.d]# vim default.conf             //修改默认配置文件server {        listen       80;        server_name  bbs.accp.com;            //修改服务名称        #charset koi8-r;        access_log  /var/log/nginx/www.accp.com-access.log  main;        location /post {                          //用location匹配post目录                rewrite (.+) http://www.accp.com/bbs$1 permanent;          //永久重定向跳转        }

2、修改dns的区域数据配置文件accp.com.zone

[root@localhost conf.d]# cd /var/named/[root@localhost named]# vim accp.com.zone          //修改区域数据配置文件$TTL 1D@       IN SOA  @ rname.invalid. (                                                    0       ; serial                                                    1D      ; refresh                                                    1H      ; retry                                                    1W      ; expire                                                    3H )    ; minimum                NS      @                A       127.0.0.1bbs IN  A       192.168.131.133[root@localhost named]# systemctl restart named          //重启dns域名解析服务[root@localhost named]# systemctl restart nginx            //重启Nginx服务[root@localhost named]# echo "nameserver 192.168.13.144" > /etc/resolv.conf //将解析服务器地址放到本地解析配置文件中

输入post目录及参数会跳转到bbs及后面的参数,这里由于浏览器的的版本问题无法显示域名后面的参数

应用实例四、 基于参数匹配的跳转

例 如 现 在 访 问 http://www.accp.com/100-(100|200)-100.html 跳转到 http://www.accp.com 页面。

1、修改默认配置文件

[root@localhost ~]# cd /etc/nginx/conf.d/[root@localhost conf.d]# vim default.conf server {        listen       80;        server_name  www.accp.com;        #charset koi8-r;        access_log  /var/log/nginx/www.accp.com-access.log  main;        if ($request_uri ~ ^/100-(100|200)-(\d+).html$){               ##匹配正则开头为100-(100|200)-一次多次的整数html为结尾的                rewrite (.*) http://www.accp.com permanent;       ##永久重定向跳转到主页        }

2、修改dns的区域数据配置文件accp.com.zone

[root@localhost conf.d]# vim /var/named/accp.com.zone         //修改区域数据配置文件www IN  A       192.168.131.133   [root@localhost conf.d]# systemctl restart named            //重启dns域名解析服务 [root@localhost conf.d]# systemctl restart nginx              //重启Nginx服务

输入100-100-99.html结尾的网页可以跳转到accp网页主页

应用实例五、基于目录下所有 php 结尾的文件跳转

访问 http://www.accp.com/upload/1.php 跳转到首页

修改Nginx默认配置文件

[root@localhost ~]# cd /etc/nginx/conf.d/[root@localhost conf.d]# vim default.conf                //修改默认配置文件server {        listen       80;        server_name  www.accp.com;        #charset koi8-r;        access_log  /var/log/nginx/www.accp.com-access.log  main;        location ~* /upload/.*\.php$ {                                                                                      //匹配不分大小写,匹配upload后零次或多次以.php为结尾的                rewrite (.+) http://www.accp.com permanent;                       //跳转到首页        }[root@localhost conf.d]# systemctl restart nginx                                  //重启Nginx服务

访问/upload/以.php结尾的网页可以跳转到accp首页

应用实例六、基于最普通一条 url 请求的跳转

访问一个具体的页面跳转到首页

修改Nginx默认配置文件

[root@localhost ~]# cd /etc/nginx/conf.d/[root@localhost conf.d]# vim default.conf    //修改Nginx默认配置文件server {        listen       80;        server_name  www.accp.com;        #charset koi8-r;        access_log  /var/log/nginx/www.accp.com-access.log  main;        location ~* ^/abc/123.html {                         //匹配某一个特定的网页                rewrite (.+) http://www.accp.com permanent;                    //跳转到首页        }[root@localhost conf.d]# systemctl restart nginx                               //重启Nginx服务

访问某一个特定网页可以跳转回accp首页

文件 配置 域名 服务 区域 网页 数据 实例 应用 参数 页面 首页 地址 目录 公司 站点 永久 测试 合法 业务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 蓝蝴蝶校园网搜索不到服务器 企业软件开发能力 杭州服务器机柜过滤器 吉林博创网络技术公司 英国游戏软件开发大学 图书管理数据库处理功能 软件开发过程质量体系 数据库窗口函数是什么 太原商场触控拍照软件开发公司 微网络技术科技有限公司 电脑远程桌面服务器没反应 关于国家网络安全的调研 初中学生网络安全教育课教案 数据库在教务系统中的应用 网络安全法几几年实施 常州数据库管理师证 太原华信网络技术有限公司 基于图数据库的导航数据 数据库默认的变量是字段变量嘛 家长会网络安全教育 西安交易性数据库 数据库空间是什么意思 软件开发一般遵循什么流程 重装系统数据库附加还原报错 服务器怎么在地狱找残骸 二年级国家网络安全教育主题班会 互联网属于是科技吗 云南回收服务器cpu access数据库当前名称 华三smtp服务器设置
0