Nginx地址重写和重定向

一、rewrite配置语法
指令:rewrite regex replacement [flag]; 可存在位置:server,location,if	
说明:regex是匹配规则,replacement要跳转的路径,flag可以是以下值
last:停止rewrite检测,继续匹配
break:停止rewrite检测,停止匹配
redirect:返回302临时重定向,地址栏会显示跳转后的地址
permanent:返回301永久重定向,地址栏会显示跳转后的地址

其实permanent和redirect区别就是301和302的区别,301重定向是永久性的,浏览器会把这个跳转规则进行缓存,所以关闭nginx后仍然会进行跳转,302重定向是临时更改,不会被缓存或保存

二、rewrite使用场景

1,URL访问跳转:支持开发设计,页面跳转,兼容性支持,展示效果
2.SEO优化:依赖于url路径,以便支持搜索引擎录入
3.维护:后台维护,流量转发等
4.安全:伪静态,真实动态页面进行伪装

三、break和last区别

案例

location ~^/last {
        root  /usr/share/nginx/html;
        rewrite ^/last /test/ last;
}

location ~ ^/break {
       root   /usr/share/nginx/html;
       rewrite ^/break /test/ break;
}

location /test {
      default_type application/json;
     return 200 '{"status":"success"}';
}

测试结果如下

[root@web01 conf.d]# curl http://192.168.93.225/last/   //{"status":"success"}

[root@web01 conf.d]# curl http://192.168.93.225/break/   //404

过程分析:

请求http://192.168.93.225/last/会进入location ~^/last{}规则,请求路径重写成http://192.168.93.225/test/并重新发送一次请求,进入location /test{}规则,所以返回了{"status":"success"}

请求http://192.168.93.225/break/会进入location ~^/break{}规则,请求路径重写成http://192.168.93.225/test/,但是其不会重新发送请求。而是停止匹配,因为其站点目录是/usr/share/nginx/html,所以他是寻找/usr/share/nginx/html/test/index.html文件。而其文件不存在所以返回404.

验证:

[root@web01 test]# tree /usr/share/nginx/html/test/
/usr/share/nginx/html/test/

0 directories, 0 files
[root@web01 test]# echo "123" > index.html
[root@web01 test]# tree /usr/share/nginx/html/test/
/usr/share/nginx/html/test/
└── index.html

0 directories, 1 file
[root@web01 test]# curl http://192.168.93.225/break
123
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值