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

 更新时间:2024年02月02日 09:57:55   作者:Liu_Fang_Hong  
Rewrite主要实现url地址重写,以及重定向,就是把传入web的请求重定向到其他url的过程,这篇文章主要介绍了Nginx Rewrit实现网页跳转功能详细步骤,需要的朋友可以参考下

一、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网页跳转内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解Nginx配置SSL证书实现Https访问

    详解Nginx配置SSL证书实现Https访问

    这篇文章主要介绍了详解Nginx配置SSL证书实现Https访问,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • HipChat上传文件报未知错误的原因分析及解决方案

    HipChat上传文件报未知错误的原因分析及解决方案

    HipChat的功能类似于Campfire、Sazneo等在线协同工具,并且和Yammer以及Salesforce的Chatter等企业社交平台有一定相似之处。你可以为单个项目或者小组搭建自有的聊天室,也可以很方便的发起一对一聊天
    2016-01-01
  • NGINX的反向代理和正向代理的区别解析

    NGINX的反向代理和正向代理的区别解析

    NGINX是一款广泛使用的开源Web服务器和反向代理服务器,它也可以作为正向代理服务器使用,本文给大家介绍NGINX的反向代理和正向代理的区别,感兴趣的朋友跟随小编一起看看吧
    2026-05-05
  • Nginx反向代理学习实例教程

    Nginx反向代理学习实例教程

    nginx作为web服务器一个重要的功能就是反向代理,当然你也可以使用nginx配置正向代理,这篇文章主要给大家介绍了关于Nginx反向代理的相关资料,需要的朋友可以参考下
    2021-10-10
  • 使用nginx部署前端项目的实现

    使用nginx部署前端项目的实现

    前端项目的部署以前一直是把静态资源放到后端工程中,随后端部署一起部署,本文主要介绍了使用nginx部署前端项目的实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10
  • Docker部署nginx实现过程图文详解

    Docker部署nginx实现过程图文详解

    这篇文章主要介绍了Docker部署nginx实现过程图文详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • ubuntu系统中nginx启动脚本

    ubuntu系统中nginx启动脚本

    这篇文章主要介绍了ubuntu系统中nginx启动脚本,可以实现nginx的自启动,需要的朋友可以参考下
    2014-02-02
  • 使用Nginx实现端口转发TCP代理的实现示例

    使用Nginx实现端口转发TCP代理的实现示例

    本文主要介绍了使用Nginx实现端口转发TCP代理的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12
  • Nginx如何为静态文件添加访问权限

    Nginx如何为静态文件添加访问权限

    这篇文章主要介绍了Nginx如何为静态文件添加访问权限问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Nginx访问日志access_log配置及信息详解(推荐)

    Nginx访问日志access_log配置及信息详解(推荐)

    当你设置日志级别成debug,如果你在调试一个在线的高流量网站的话,你的错误日志可能会记录每个请求的很多消息,这样会变得毫无意义,下面小编给大家介绍Nginx访问日志access_log配置及信息详解,感兴趣的朋友跟随小编一起看看吧
    2024-04-04

最新评论