如何应用Nginx Rewrit实现网页跳转

这篇具有很好参考价值的文章主要介绍了如何应用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,mysql,运维

修改指定用户Nginx 

首先要有nginx的程序用户

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

nginx 跳转,nginx,mysql,运维

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

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

添加域名重定向 

nginx 跳转,nginx,mysql,运维

第二步 检查语法错误 

保存并退出

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

nginx 跳转,nginx,mysql,运维

第三步 有报错进行排错 

这里找不到日志

无法识别到日志格式

接着进入配置文件

nginx 跳转,nginx,mysql,运维

再次保存并退出

再次查看是否有错误

nginx 跳转,nginx,mysql,运维

手动创建日志文件

并且进行赋权

nginx 跳转,nginx,mysql,运维

第四步 添加域名映射关系 

修改域名解析

vim /etc/hosts

nginx 跳转,nginx,mysql,运维

第五步 重启服务 

重启服务

systemctl restart nginx

nginx 跳转,nginx,mysql,运维

第六步 测试结果 

用浏览器进行访问测试

nginx 跳转,nginx,mysql,运维

查看网页元素

详细信息的网址和状态码

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

 nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

旧域名跳转新域名

第一步 修改配置文件

nginx 跳转,nginx,mysql,运维

第二步 添加域名映射关系

nginx 跳转,nginx,mysql,运维

第三步 重启服务

命令:systemctl restart nginx

nginx 跳转,nginx,mysql,运维

第四步 创建网页执行文件

nginx 跳转,nginx,mysql,运维

第五步 用浏览器进行测试

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

我们跳转成功

但是网页内没有内容

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

第六步 处理错误(排错)

nginx 跳转,nginx,mysql,运维

第七步 重新测试访问

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

基于参数进行匹配跳转

第一步 修改配置文件

nginx 跳转,nginx,mysql,运维

第二步 检查语法错误

命令:nginx -t

nginx 跳转,nginx,mysql,运维

第三步 重启服务

命令:systemctl restart nginx

nginx 跳转,nginx,mysql,运维

第四步 设置映射关系

命令:vim  /etc/hosts

nginx 跳转,nginx,mysql,运维

第五步 用浏览器进行测试

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

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

第一步 修改配置文件

nginx 跳转,nginx,mysql,运维

第二步 检测文件语法问题

命令:nginx -t

nginx 跳转,nginx,mysql,运维

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

nginx 跳转,nginx,mysql,运维

第四步 重启服务

命令:systemctl restart nginx

nginx 跳转,nginx,mysql,运维

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

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

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

第一步 修改配置文件

nginx 跳转,nginx,mysql,运维

第二步 检查文件语法问题

命令:nginx -t

nginx 跳转,nginx,mysql,运维

第三步 重启服务

命令:systemctl restart nginx

nginx 跳转,nginx,mysql,运维

第四步 用浏览器进行测试

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维

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

第一步 修改配置文件

nginx 跳转,nginx,mysql,运维

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

命令:nginx -t

nginx 跳转,nginx,mysql,运维

第三步 重启服务

命令:systemctl restart nginx

nginx 跳转,nginx,mysql,运维

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

nginx 跳转,nginx,mysql,运维

nginx 跳转,nginx,mysql,运维文章来源地址https://www.toymoban.com/news/detail-698491.html

到了这里,关于如何应用Nginx Rewrit实现网页跳转的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FastAPI + NGINX + Gunicorn:一步一步教你部署一个高性能的Python网页应用

    部署一个 FastAPI 应用到你的服务器是一项复杂的任务。如果你对 NGINX 、 Gunicorn 和 Uvicorn 这些技术不熟悉,可能会浪费大量的时间。如果你是刚接触 Python 语言不久或者希望利用 Python 构建自己的Web应用程序,本文的内容可能会让你第一次部署时更节省时间。 FastAPI 是用于开发

    2024年02月05日
    浏览(62)
  • 使用 Nginx 实现企业微信域名配置中的校验文件跳转

    在企业微信中配置业务域名时,通常需要在该域名的根路径下放置一个校验文件,以验证域名的所有权。然而,如果该域名是第三方的,你可能无法直接在根路径下放置文件。在这种情况下,你可以使用 Nginx 来实现校验文件的跳转,从而成功完成企业微信域名配置。 步骤1

    2024年02月09日
    浏览(60)
  • Docker部署Springboot应用【mysql部署+jar部署+Nginx部署】

    【项目达到目标】 1.基本准备 2、mysql部署 3、jar部署 4、Nginx部署 一、基本准备 石工拿的就是之前放置在我们服务器上的应用进行部署,主要就是mysql和jar还有Vue的部署。 目前已经有的是jar、已经打包好的vue   二、mysql部署 docker run -d --name mysql     --restart=always     -p 3

    2024年02月14日
    浏览(36)
  • 数据库应用:CentOS 7离线安装MySQL与Nginx

    目录 一、理论 1.安装依赖 二、实验 1.离线安装MySQL与Nginx 2.离线安装Nginx 三、问题 1.执行nginx -v命令报错 四、总结 (1)概念 安装依赖是指在软件开发中,为了运行或者编译一个程序或者库,在计算机上安装与其相依赖并且需要使用的其它程序或者库。根据查询相关公开信息

    2024年02月16日
    浏览(59)
  • docker应用部署(部署MySql,部署Tomcat,部署Nginx,部署Redis)

    一、部署MySQL 搜索mysql镜像 拉取mysql镜像 创建容器,设置端口映射、目录映射 参数说明: -p 3307:3306 :将容器的 3306 端口映射到宿主机的 3307 端口。 -v $PWD/conf:/etc/mysql/conf.d :将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。配置目录 -v $PWD/logs:/logs :将主机当前目

    2024年02月03日
    浏览(43)
  • docker 容器操作、应用部署、mysql,redis,nginx、迁移与备份、Dockerfile

    mysql部署 redis nginx 常用和不常用的命令 dockerfile构建一个django项目 docker私有仓库 镜像传到官方仓库 镜像分层 私有仓库搭建 新建flask项目app.py 编写Dockerfile 用于构建flask项目的镜像 编写dockercompose的yml文件dockercompose.yml dockercompose启动 项目目录结构 luffy_api/Dockerfile 构建uwsgi+dj

    2023年04月13日
    浏览(51)
  • 2-Docker-应用-多容器部署Django+Vue项目(nginx+uwsgi+mysql)

    基于Linux CentOS 7系统(虚拟机),使用Docker,多容器部署Django+Vue项目 整体部署用到了:Django+Vue+nginx+mysql+uwsgi 先每一个容器单独部署,最后用Docker compose 语法整合,统一部署 参考文章:https://blog.csdn.net/qq_45445505/article/details/135563784 章标题:Docker介绍 节标题:Docker安装 总结梳

    2024年03月10日
    浏览(97)
  • Nginx重写跳转

    目录 一、rewrite跳转场景 二、rewrite跳转实现 三、rewrite实际场景 四、rewrite正则表达式 五、rewrite命令语法格式 六、location分类 1、location 大致可以分为三类 2、正则匹配的常用表达式 七、location 优先级 八、rewrite和location比较 九、总结 Rewrite 跳转场景主要包括以下几种: 1、可

    2024年02月11日
    浏览(36)
  • 解决nginx已配置但访问依旧跳转到nginx的欢迎页面

    1、确定nginx.conf配置没有问题 2、确保修改了nginx.conf文件后重启了nginx,nginx -s reload 3、查看是否有两个nginx在运行,如果有两个nginx运行,则停止nginx再重新启动         查看nginx运行:ps -ef | grep nginx         停止nginx:nginx -s stop         启动nginx:nginx 重新访问页面,

    2024年02月02日
    浏览(44)
  • nginx :80跳转其他端口

    以docker nginx为例 修改docker-env.yml文件增加端口映射 修改nginx配置文件,增加server nginx -t  #测试配置文件是否通过 重新build和重启nginx 服务 测试 http://xxx.xxx.com 是否跳转到对应的端口(如8001)

    2024年02月14日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包