Nginx Rewrite

Nginx Rewrite概述

Rewrite跳转场景

URL看起来更规范,合理
企业会将动态URL地址伪装成静态地址提供服务
网址换新域名后,让旧的访问跳转到新的域名上
服务端某些业务调整

Rewrite 原理简述

Nginx跳转需求的实现方式

使用rewrite进行匹配跳转
使用if匹配全局变量后跳转
使用location匹配再跳转

rewirte放在server{},if{},location{}段中

location只对域名后边的出去传递参数外的字符串起作用

对域名或参数字符串

	使用if全局变量匹配
	使用proxy_pass反向代理

Nginx正则表达式

字符说明
^匹配输入字符串得起始位置
$匹配输入字符串的结束位置
*匹配前面的字符零次或多次
+匹配前面的字符一次或多次
?匹配前面的字符零次或一次
.匹配除“\n”(换行)之外的任何单个字符
\将后面接着的字符标记为一个特殊字符或一个原义字符或一个向后引用
\d匹配纯数字
{n}重复n次
{n,}重复n次或更多次
[c]匹配单个字符c
[a-z]匹配a-z小写字母的任意一个
[a-zA-Z]匹配a-z小写字母或A-Z大写字母的任意一个

Rewrite命令

Rewrite命令语法

rewrite     <regex>        <replacement>          [flag];
              正则            跳转后的内容      rewrite支持的flag标记

flag标记说明

标记说明
last相当于Apache的[L]标记,表示完成rewrite
break本条规则匹配完成即终止,不再匹配后面的任何规则
redirect返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新url
permanent返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫更新url

last和break比较

					    	 last                   break
	 使用场景         一般写在server和if中        一般使用在location中
	 URL匹配          不终止重写后的url匹配        终止重写后的url匹配

location分类

分类

	location = patt {}[精准匹配]
	location patt {}[一般匹配]
	location ~ patt {}[正则匹配]

正则匹配得常用表达式

标记说明
~执行一个正则匹配,区分大小写
~*执行一个正则匹配,不区分大小写
!~执行一个正则匹配,区分大小写不匹配
!~*执行一个正则匹配,不区分大小写不匹配
^~普通字符匹配;使用前缀匹配。如果匹配成功,则不再匹配其它location
=普通字符精通匹配。也就是完全匹配
@定义一个命名的location,使用在内部定向时

location优先级

相同类型的表达式,字符串长的会优先匹配

按优先级排列

= 类型
^~ 类型表达式
正则表达式 (~和~*)类型
常规字符串匹配类型,按前缀匹配 
通用匹配(/),如果没有其他匹配,任何请求都会匹配到

location优先级规则

匹配某个具体文件

(location = 完整路径)> (location ^~ 完整路径) > (location ~* 完整路径)= (location ~ 完整路径)> (location 完整路径) > (location /)

用目录做匹配访问某个文件

(location = 目录)> (location ^~ 目录/)> (location ~ 目录) = (location ~* 目录)> (location 目录) > (location /)

比较rewrite和location

相同点

都可以实现跳转

不同点

rewrite是在同一域名内更改获取资源的路径
location是对一类路径做控制访问或反向代理,还可以proxy_pass到其它机器

rewrite会写在location里,执行顺序

执行server块里面的rewrite指令
执行location匹配
执行选定的location中的rewrite指令

安装Nginx服务

步骤

安装nginx源
安装nginx软件包
修改默认站点配置文件:etc/nginx/conf.d/default.conf
启动nginx

注意

确定域名可以正常解析
做下一个场景前,要删除上一个场景的配置
及时清除浏览器缓存

基于域名的跳转

公司旧域名www.kgc.com,因业务需求有变更,需要使用新域名www.newkgc.com代替

不能废除旧域名
从旧域名跳转到新域名,且保持其参数不变

修改默认站点配置文件

server {
        listen       80;
        server_name  www.chen.com;
        if ($host = 'www.chen.com')
        {
           rewrite ^/(.*)$ http://www.yu.com/$1 permanent;
        }

在这里插入图片描述

添加新域名到站点位置

server  {
           listen 80;
           server_name www.yu.com;
           charset utf-8;
           access_log /var/log/nginx/www.yu.com-access.log main;
           location / {
           root   /usr/share/nginx/html;
           index index.html index.htm;
          }
}

在这里插入图片描述

创建文件夹

mkdir /var/log/nginx
mkdir -p /usr/share/nginx/html
echo "yu" > /usr/share/nginx/html/index.html
ulimit -n 65535 >> /etc/rc.local

重启服务
浏览器访问IP
在这里插入图片描述
在这里插入图片描述

基于客户端IP地址的跳转

应用场景,其它IP访问任何内容都会显示一个固定维护页面,只有设定IP可以正常访问

创建定向网页

vi /usr/share/nginx/html/gg.html

修改配置文件
在这里插入图片描述

重启服务
在192.168.100.122 访问

在这里插入图片描述
其他客户端访问

在这里插入图片描述

基于旧、新域名跳转并加目录

在这里插入图片描述
在这里插入图片描述
重启服务
客户机访问

在这里插入图片描述

基于匹配参数的跳转

修改默认站点配置文件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

基于目录下所有php文件跳转

修改配置
在这里插入图片描述
浏览器访问

在这里插入图片描述

基于最普通url请求的跳转

修改配置
在这里插入图片描述
区分大小写
在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值