Nginx Rewrit实现网页跳转功能详细步骤,


目录
  • 一、Nginx Rewrite
  • 二、Rewrite功能
    • Rewrite跳转场景
    • Rewrite跳转实现 Nginx
      • 跳转
      • pcre支持
      • 重写模块
    • Rewrite实际场景
      • Rewrite命令/语法格式
        • flag标记说明
      • location分类
        • location优先级
          • rewrite和location相比
      • 三、跳转案例
        • 实现域名跳转
          • 第一步 修改指定配置文件
          • 第二步 检查语法错误 
          • 第三步 有报错进行排错 
          • 第四步 添加域名映射关系 
          • 第五步 重启服务 
          • 第六步 测试结果 
        • 旧域名跳转新域名
          • 第一步 修改配置文件
          • 第二步 添加域名映射关系
          • 第三步 重启服务
          • 第四步 创建网页执行文件
          • 第五步 用浏览器进行测试
          • 第六步 处理错误(排错)
          • 第七步 重新测试访问
        • 基于参数进行匹配跳转
          • 第一步 修改配置文件
          • 第二步 检查语法错误
          • 第三步 重启服务
          • 第四步 设置映射关系
          • 第五步 用浏览器进行测试
        • 基于客户端IP地址访问跳转
          • 第一步 修改配置文件
          • 第二步 检测文件语法问题
          • 第三步 创建网页返回执行文件
          • 第四步 重启服务
          • 第五步 用浏览器进行访问测试
        • 基于目录下PHP文件进行跳转
          • 第一步 修改配置文件
          • 第二步 检查文件语法问题
          • 第三步 重启服务
          • 第四步 用浏览器进行测试
        • 基于普通的RUL进行请求跳转
          • 第一步 修改配置文件
          • 第二步 检查是否存在语法问题
          • 第三步 重启服务
          • 第四步 用浏览器进行访问测试

      一、Nginx Rewrite

      Rewrite主要的功能是实现URL重写,Nginx 的 Rewrite 规则采用 PCRE Perl 兼容正则表达式的语法进行规则匹配,如相使用 Nginx 的 Rewrite 功能,在编译 Nginx 前要编译安装 PCRE 库。Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程。

      rewrite和location的功能有点相像,都能实现跳转,主要区别在于rewrite常用于同一域名内更改获取资源的路径,而location是对一类路径做控制访问和反向代理,可以proxy_pass到其他服务器。

      Nginx提供的全局变量或自己设置的变量,结合正则表达式和标志位实现url重写以及重定向。

      rewrite只能放在server{},location{},if{}中,

      并且只能对域名后边的除去传递的参数外的字符串起作用。

      二、Rewrite功能

      ① Rewrite跳转场景

      ② Rewrite跳转实现

      ③ Rewrite实际场景

      ④ Rewrite正则表达式(用于匹配URL)

      ⑤ Rewrite命令/语法格式

      ⑥ location分类

      ⑦ location优先级

      ⑧ Rewrite和location做比较

      ⑨ 根据以上来实现跳转

      Rewrite跳转场景

      ① URL看起来更规范、合理

      ② 企业会将动态URL地址伪装成静态地址提供服务

      ③ 网址换新域名后,让旧的访问跳转到新的域名上

      ④ 服务端某些业务跳转

      URL访问跳转, 支持开发设计

      ① 页面跳转 ② 兼容性支持 ③ 展示效果

      SEO优化

      维护

      ① 后台维护 ② 流量转发

      安全

      ① 伪静态页面

      Rewrite跳转实现 Nginx

      支持URL重写、支持if条件判断

      但不支持else的命令执行

      跳转

      循环最多可以执行10次

      超过后nginx将返回500的错误

      pcre支持

      rewrite使用Nginx全局变量或者自己设置的变量

      结合正则表达式和标志位实现URL重写以及重定向

      重写模块

      set指令

      以上全部都基于

      ngx_http_rewrite_module模块

      Rewrite实际场景

      ① Nginx跳转需求的实现方式

      使用rewrite进行匹配跳转(防盗链)

      使用if匹配全局变量后跳转(Nginx自身的全局变量,不是系统的全局变量)

      location可以匹配本地重写以及跨服务器跳转

      ② rewrite放在server{}、if{}、location{}模块段中

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

      ③对域名或者参数字符串

      用if全局变量匹配

      使用proxy_pass反向代理

      Rewrite是在同一域名内更改获取资源的路径

      location本身就是一种路径资源

      Rewrite命令/语法格式

      命令语法:rewrite [正则] [跳转后的内容] [rewrite支持的flag标记];

      flag标记说明

      last (相当于Apache的[L]标记,表示完成rewrite)一般用于Server和if当中

      break (本条规则匹配完成即终止,不再匹配后面的任何规则)一般用于location

      redirect (返回302临时重定向,浏览器地址会显示跳转后的URL地址,爬虫不会更新URL)

      permanent (返回301永久重定向,浏览器地址栏会显示跳转后的URL地址,爬虫会更新URL)

      break和last类似   但break不会重新发起一次处理过程,而是直接返回处理结果

      redirect    该标记表示当前规则匹配成功后立即进行重定向操作

      permanent    该标记和redirect类似,但是永久重定向

      set    标记表示当前规则匹配成功设置一个变量,并把变量传入下一跳规则

      location分类

      location = [字符串]{}   #精准匹配

      location [字符串]{}    #一般匹配

      location [字符串]{}    #正则匹配

      ~   #执行一个正则匹配,区分大小写

      ~*  #不区分大小写

      !~   #区分大小写取反

      !~*   #不区分大小写取反

      ^~   #普通字符匹配,使用前缀匹配,如果匹配成功则不再进行其他匹配

      =   #普通字符,精准匹配

      @   #定义一个命名的location,使用在内部定义

      location优先级

      优先匹配精确匹配(=)

      其次前缀匹配(^~)

      其次再按照文件中顺序的正则匹配(~或者~*)

      然后匹配不带任何修饰的前缀匹配(常规字符串匹配)

      通用匹配(/)如果没有其他匹配,任何请求都可以符合匹配

      执行顺序

      精确 > 前缀 > 正则 > 一般 > 通用

      优先级相同的情况下,执行顺序由上到下按顺序执行

      rewrite和location相比

      都可以实现跳转(相同点)

      rewrite是在同一个域名内更改获取资源的路径

      location是对一类路径做控制访问或者反向代理,还可以proxy_pass到其他机器

      rewrite会写在location里(按顺序执行)

      执行Server块里面的rewrite指令

      执行location匹配

      执行选定的location中的rewrite指令

      三、跳转案例

      实现域名跳转

      首先要先关闭防火墙和安全机制

      第一步 修改指定配置文件

      修改指定用户Nginx 

      首先要有nginx的程序用户

      cat  /etc/passwd   #查看是否有nginx用户,是否是程序用户

      修改对应域名(自定义即可)

      修改指定的日志文件,后面的main可加可不加

      添加域名重定向 

      第二步 检查语法错误 

      保存并退出

      nginx -t   #检查是否有语法问题

      第三步 有报错进行排错 

      这里找不到日志

      无法识别到日志格式

      接着进入配置文件

      再次保存并退出

      再次查看是否有错误

      手动创建日志文件

      并且进行赋权

      第四步 添加域名映射关系 

      修改域名解析

      vim /etc/hosts

      第五步 重启服务 

      重启服务

      systemctl restart nginx

      第六步 测试结果 

      用浏览器进行访问测试

      查看网页元素

      详细信息的网址和状态码

      旧域名跳转新域名

      第一步 修改配置文件

      第二步 添加域名映射关系

      第三步 重启服务

      命令:systemctl restart nginx

      第四步 创建网页执行文件

      第五步 用浏览器进行测试

      我们跳转成功

      但是网页内没有内容

      跳转可以正常跳转但不显示网页内容

      第六步 处理错误(排错)

      第七步 重新测试访问

      基于参数进行匹配跳转

      第一步 修改配置文件

      第二步 检查语法错误

      命令:nginx -t

      第三步 重启服务

      命令:systemctl restart nginx

      第四步 设置映射关系

      命令:vim  /etc/hosts

      第五步 用浏览器进行测试

      基于客户端IP地址访问跳转

      第一步 修改配置文件

      第二步 检测文件语法问题

      命令:nginx -t

      第三步 创建网页返回执行文件

      第四步 重启服务

      命令:systemctl restart nginx

      第五步 用浏览器进行访问测试

      基于目录下PHP文件进行跳转

      第一步 修改配置文件

      第二步 检查文件语法问题

      命令:nginx -t

      第三步 重启服务

      命令:systemctl restart nginx

      第四步 用浏览器进行测试

      基于普通的RUL进行请求跳转

      第一步 修改配置文件

      第二步 检查是否存在语法问题

      命令:nginx -t

      第三步 重启服务

      命令:systemctl restart nginx

      第四步 用浏览器进行访问测试

      到此这篇关于Nginx Rewrit实现网页跳转功能详细步骤的文章就介绍到这了,更多相关Nginx Rewrit网页跳转内容请搜索PHP之友以前的文章或继续浏览下面的相关文章希望大家以后多多支持PHP之友!

      您可能感兴趣的文章:
      • Nginx中location匹配以及rewrite重写跳转详解
      • nginx里的rewrite跳转的实现
      • Nginx rewrite跳转应用场景详解
      • nginx rewrite 实现URL跳转的方法

      相关内容