如何应用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用户,是否是程序用户

如何应用Nginx Rewrit实现网页跳转_第1张图片

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

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

添加域名重定向 

如何应用Nginx Rewrit实现网页跳转_第2张图片

第二步 检查语法错误 

保存并退出

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

如何应用Nginx Rewrit实现网页跳转_第3张图片

第三步 有报错进行排错 

这里找不到日志

无法识别到日志格式

接着进入配置文件

如何应用Nginx Rewrit实现网页跳转_第4张图片

再次保存并退出

再次查看是否有错误

如何应用Nginx Rewrit实现网页跳转_第5张图片

手动创建日志文件

并且进行赋权

如何应用Nginx Rewrit实现网页跳转_第6张图片

第四步 添加域名映射关系 

修改域名解析

vim /etc/hosts

如何应用Nginx Rewrit实现网页跳转_第7张图片

第五步 重启服务 

重启服务

systemctl restart nginx

第六步 测试结果 

用浏览器进行访问测试

如何应用Nginx Rewrit实现网页跳转_第8张图片

查看网页元素

详细信息的网址和状态码

如何应用Nginx Rewrit实现网页跳转_第9张图片

如何应用Nginx Rewrit实现网页跳转_第10张图片

如何应用Nginx Rewrit实现网页跳转_第11张图片

 如何应用Nginx Rewrit实现网页跳转_第12张图片

如何应用Nginx Rewrit实现网页跳转_第13张图片

旧域名跳转新域名

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转_第14张图片

第二步 添加域名映射关系

如何应用Nginx Rewrit实现网页跳转_第15张图片

第三步 重启服务

命令:systemctl restart nginx

第四步 创建网页执行文件

第五步 用浏览器进行测试

如何应用Nginx Rewrit实现网页跳转_第16张图片

如何应用Nginx Rewrit实现网页跳转_第17张图片

如何应用Nginx Rewrit实现网页跳转_第18张图片

我们跳转成功

但是网页内没有内容

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

第六步 处理错误(排错)

如何应用Nginx Rewrit实现网页跳转_第19张图片

第七步 重新测试访问

如何应用Nginx Rewrit实现网页跳转_第20张图片

如何应用Nginx Rewrit实现网页跳转_第21张图片

基于参数进行匹配跳转

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转_第22张图片

第二步 检查语法错误

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转_第23张图片

第三步 重启服务

命令:systemctl restart nginx

第四步 设置映射关系

命令:vim  /etc/hosts

如何应用Nginx Rewrit实现网页跳转_第24张图片

第五步 用浏览器进行测试

如何应用Nginx Rewrit实现网页跳转_第25张图片

如何应用Nginx Rewrit实现网页跳转_第26张图片

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

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转_第27张图片

第二步 检测文件语法问题

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转_第28张图片

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

第四步 重启服务

命令:systemctl restart nginx

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

如何应用Nginx Rewrit实现网页跳转_第29张图片

如何应用Nginx Rewrit实现网页跳转_第30张图片

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

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转_第31张图片

第二步 检查文件语法问题

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转_第32张图片

第三步 重启服务

命令:systemctl restart nginx

第四步 用浏览器进行测试

如何应用Nginx Rewrit实现网页跳转_第33张图片

如何应用Nginx Rewrit实现网页跳转_第34张图片

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

第一步 修改配置文件

如何应用Nginx Rewrit实现网页跳转_第35张图片

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

命令:nginx -t

如何应用Nginx Rewrit实现网页跳转_第36张图片

第三步 重启服务

命令:systemctl restart nginx

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

如何应用Nginx Rewrit实现网页跳转_第37张图片

如何应用Nginx Rewrit实现网页跳转_第38张图片

你可能感兴趣的:(nginx,mysql,运维)