Web服务器基础 -- Nginx rewrite 案例实战(错误页面重定向、虚拟目录别名重定向、域名跳转)

Nginx rewrite 案例实战(错误页面重定向、虚拟目录别名重定向、域名跳转)


本环境是基于 Centos 7.8 系统构建Nginx学习环境
具体构建,请参考 Nginx-1.18.0 环境部署

Nginx rewrite和 Apache 等 Web 服务软件一样, Nginx rewrite 的主要功能也是实现 URL 地址重写。Nginx的rewrite 规则需要 PCRE 软件的支持, 即通过 Perl 兼容正则表达式语法进行规则匹配。


一、Nginx 中的正则

Nginx 中的正则匹配

  • ~ 与~* 的区别
  • ~ 匹配内容区分大小写
  • ~* 匹配内容不区分的小写
  • !~ 取反
  • ^~ 但多个匹配同时存在,优先匹配 ^~匹配的内容;不做正则表达式的检查 (优先处理)

使用语法

ocation 语法说明表
location 指令的作用是根据用户请求的URI来执行不同的应用。
不同uri及特殊字符组合匹配的顺序说明
location [=||*|^~] uri {

}

location[=、~ 、*、^]uri{…}
指令匹配标识匹配的网站地址匹配URI后要执行的配置段

在这里插入图片描述

二、Nginx rewrite 案例实战

rewrite 指令结尾的 flag 标记说明

flag 标记符号说明
last本条规则匹配完成后, 继续向下匹配新的 location URI 规则
break本条规则匹配完成即终止, 不再匹配后面的任何规则
redirect返回 302 临时重定向, 浏览器地址栏会显示跳转后的 URL 地址
permanent返回 301 永久重定向, 浏览器地址栏会显示跳转后的 URL 地址

Nginx rewrite 的企业应用场景

  • 可以调整用户浏览的URL,看起来更规范,合乎开发及产品人员的需求。
  • 为了让搜索引擎搜录网站内容及用户体验更好,企业会将动态URL地址伪装成静态地址提供服务。
  • 网址换新域名后,让旧的访问跳转到新的域名上。例如,访问京东的360buy.com会跳转到jd.com。
  • 根据特殊变量、目录、客户端的信息进行URL调整等

配置基于Nginx的web服务

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf 
    server {
        listen       192.168.5.11:80;
        server_name  news.123.cn;
        location / {
            root   /usr/share/nginx/html/news;
            index  index.html index.htm;
           }        
       }

[root@node01 ~]# vim /usr/share/nginx/html/news/index.html 
news test page...

[root@node01 ~]# systemctl enable --now nginx
[root@node01 ~]# netstat -lnutp | grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      2219/nginx: master  

浏览器访问:http://news.123.cn/
在这里插入图片描述

1、错误页面重定向

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf 
    server {
        listen       192.168.5.11:80;
        server_name  news.123.cn;
        location / {
            root   /usr/share/nginx/html/news;
            index  index.html index.htm;
            if (!-f $request_filename){
            rewrite /.* err.html permanent;
            }
           }
       }
[root@node01 ~]# nginx -s reload

[root@node01 news]# echo 'this page is not exists...' > err.html
[root@node01 news]# ll
total 8
-rw-r--r-- 1 root root 27 Feb 22 22:45 err.html
-rw-r--r-- 1 root root 18 Feb 22 14:23 index.html

测试:http://news.123.cn/big_date.jpg
在这里插入图片描述

2、虚拟目录别名重定向

[root@node01 bbs]# vim /etc/nginx/conf.d/host.conf 
    server {
        listen       192.168.5.11:80;
        server_name  bbs.123.cn;
        location / {
            root   /usr/share/nginx/html/bbs;
            autoindex on;
            index  index.html index.htm;
            rewrite ^/virtual_dir/(.*) /first/secoend/web_age/$1 last;
        location /nginx_status {
        stub_status on;
        access_log off;
        }
        }
   }

[root@node01 bbs]# nginx -s reload

[root@node01 bbs]# cd /usr/share/nginx/html/bbs/
[root@node01 bbs]# mkdir first/secoend/web_age -p
[root@node01 bbs]# echo 'this is virtual dir test page...' > /first/secoend/web_age/virtusl_dir.html

测试:http://bbs.123.cn/virtual_dir/virtusl_dir.html
在这里插入图片描述

3、域名跳转

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf
    server {
        listen       192.168.5.11:80;
        server_name  bbs.123.cn;
        rewrite .* http://mirrors.aliyun.com/;
        location / {
            root   /usr/share/nginx/html/bbs;
            index  index.html index.htm;
           }
        }
[root@node01 ~]# nginx -s reload

测试:
浏览器访问:http://bbs.123.cn/

在这里插入图片描述
跳转成功
在这里插入图片描述

[root@node01 ~]# vim /etc/nginx/conf.d/host.conf 
    server {
        listen       192.168.5.11:80;
        server_name  bbs.123.cn;
        rewrite .* https://blog.csdn.net/XY0918ZWQ;
        location / {
            root   /usr/share/nginx/html/bbs;
            index  index.html index.htm;
           }
        }

[root@node01 ~]# nginx -s reload

测试:
浏览器访问:http://bbs.123.cn/
在这里插入图片描述
跳转成功
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值