如何应用Nginx Rewrit实现网页跳转
作者:mmseoamin日期:2023-12-20

目录

一、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 Rewrit实现网页跳转,第1张

修改指定用户Nginx 

首先要有nginx的程序用户

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

如何应用Nginx Rewrit实现网页跳转,第2张

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

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

添加域名重定向 

如何应用Nginx Rewrit实现网页跳转,第3张

第二步 检查语法错误 

保存并退出

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

如何应用Nginx Rewrit实现网页跳转,第4张

第三步 有报错进行排错 

这里找不到日志

无法识别到日志格式

接着进入配置文件

如何应用Nginx Rewrit实现网页跳转,第5张

再次保存并退出

再次查看是否有错误

如何应用Nginx Rewrit实现网页跳转,第6张

手动创建日志文件

并且进行赋权

如何应用Nginx Rewrit实现网页跳转,第7张

第四步 添加域名映射关系 

修改域名解析

vim /etc/hosts

如何应用Nginx Rewrit实现网页跳转,第8张

第五步 重启服务 

重启服务

systemctl restart nginx

如何应用Nginx Rewrit实现网页跳转,第9张

第六步 测试结果 

用浏览器进行访问测试

如何应用Nginx Rewrit实现网页跳转,第10张

查看网页元素

详细信息的网址和状态码

如何应用Nginx Rewrit实现网页跳转,第11张

如何应用Nginx Rewrit实现网页跳转,第12张

如何应用Nginx Rewrit实现网页跳转,第13张

 如何应用Nginx Rewrit实现网页跳转,第14张

如何应用Nginx Rewrit实现网页跳转,第15张

旧域名跳转新域名

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转,第16张

第二步 添加域名映射关系

如何应用Nginx Rewrit实现网页跳转,第17张

第三步 重启服务

命令:systemctl restart nginx

如何应用Nginx Rewrit实现网页跳转,第18张

第四步 创建网页执行文件

如何应用Nginx Rewrit实现网页跳转,第19张

第五步 用浏览器进行测试

如何应用Nginx Rewrit实现网页跳转,第20张

如何应用Nginx Rewrit实现网页跳转,第21张

如何应用Nginx Rewrit实现网页跳转,第22张

我们跳转成功

但是网页内没有内容

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

第六步 处理错误(排错)

如何应用Nginx Rewrit实现网页跳转,第23张

第七步 重新测试访问

如何应用Nginx Rewrit实现网页跳转,第24张

如何应用Nginx Rewrit实现网页跳转,第25张

基于参数进行匹配跳转

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转,第26张

第二步 检查语法错误

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转,第27张

第三步 重启服务

命令:systemctl restart nginx

如何应用Nginx Rewrit实现网页跳转,第28张

第四步 设置映射关系

命令:vim  /etc/hosts

如何应用Nginx Rewrit实现网页跳转,第29张

第五步 用浏览器进行测试

如何应用Nginx Rewrit实现网页跳转,第30张

如何应用Nginx Rewrit实现网页跳转,第31张

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

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转,第32张

第二步 检测文件语法问题

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转,第33张

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

如何应用Nginx Rewrit实现网页跳转,第34张

第四步 重启服务

命令:systemctl restart nginx

如何应用Nginx Rewrit实现网页跳转,第35张

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

如何应用Nginx Rewrit实现网页跳转,第36张

如何应用Nginx Rewrit实现网页跳转,第37张

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

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转,第38张

第二步 检查文件语法问题

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转,第39张

第三步 重启服务

命令:systemctl restart nginx

如何应用Nginx Rewrit实现网页跳转,第40张

第四步 用浏览器进行测试

如何应用Nginx Rewrit实现网页跳转,第41张

如何应用Nginx Rewrit实现网页跳转,第42张

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

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转,第43张

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

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转,第44张

第三步 重启服务

命令:systemctl restart nginx

如何应用Nginx Rewrit实现网页跳转,第45张

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

如何应用Nginx Rewrit实现网页跳转,第46张

如何应用Nginx Rewrit实现网页跳转,第47张