Nginx Rewrite重写

Rewrite基本概述

什么是Rewrite

  • Rewrite主要实现url地址重写,以及重定向,就是把传入Web的请求重定向到其他URL的过程。

Rewrite使用场景

  1. 地址跳转,用户访问www.nana.com这个URL时,将其定向至一个新的域名 dada.nana.com。
  2. 协议跳转,用户通过http协议请求网站时,将其重新跳转至https协议方式。
  3. 伪静态,将动态页面显示为静态页面方式的一种技术,便于搜索引擎的录入,同时减少动态URL地址对外暴露过多的参数,提升更高的安全性。
  4. 搜索引擎,SEO优化依赖于URL路径,好记的URL便于支持搜索引擎录入。

Rewrite标记Flag

rewrite指令根据表达式来重定向url,或者修改字符串。可以应用于server,location,if环境下,每行rewrite指令最后跟一个flag标记,支持flag标记如下所示:

last					本条规则匹配完成后,停止匹配,不再匹配后面的规则			# 开发用的比较多
break					本条规则匹配完成后,停止匹配,不再匹配后面的规则			# 开发用的比较多
redirect				返回302临时重定向,地址栏会显示跳转后的地址	
permanent				返回301永久重定向,地址栏会显示跳转后的地址

last与break的区别对比

- lb01服务器
1. 修改Nginx配置文件
vim /etc/nginx/conf.d/rewrite.conf
server {
       listen 80;
       server_name rewrite.nana.com;
       root /code;

       location ~ ^/break {
               rewrite ^/break /test/ break;
       }

       location ~ ^/last {
               rewrite ^/last /test/ last;
       }

       location /test/ {
               default_type application/json;
               # 定义字符串类型,参照/etc/nginx/mime.types文件 
               return 200 "ok";
       }
}

2. 重启Nginx服务
systemctl restart nginx

3. 在本机添加域名解析
C:\Windows\System32\drivers\etc
在hosts文件添加域名解析
192.168.15.5		rewrite.nana.com	

- 测试
我们在浏览器中输入rewrite.nana.com/last,可以正常访问到ok。
输入rewrite.nana.com/break,页面返回404错误。

break

  • 请求rewrite.nana.com/break
    首先 : 会去查找本地的/code/test/index.html(默认静态文件)的内容;
    如果没有找到该目录则报错404,如果找到了该目录但是没有找到对应的文件则报错403。

last

  • 请求rewrite.nana.com/last
    首先 : 会对当前server层重新的发起一次请求,rewrite.nana.com/test/
    如果有location规则匹配上,则直接返回该location的内容;
    如果没有location规则匹配上,会再去查找本地的/code/test/index.html(默认静态文件)的内容;
    如果没有找到该目录则报错404,如果找到了该目录但是没有找到对应的文件则报错403。
上一篇:关于面试mysql优化的几点纪要


下一篇:Access数据库删除重复记录,只保留一条记录的做法