nginx中rewrite的六种常用跳转(域名、客户端IP ......)

2023-11-08

注意:每次做完一个需要将前面的配置文件中配置清除,防止影响结果

一、应用场景——基于域名的跳转

1、公司旧域名www.accp.com,因业务需求有变更,
需要使用新域名www.kgc.com代替
1)不能废除旧域名
2)从旧域名跳转到新域名,且保持其参数不变

[root@localhost ~]vim /etc/nginx/comf.d/default.conf

listen			80;
server_name 	www.accp.com;    #域名修改

#charset koi8-r;
access_log  /var/log/nginx/www.accp.c0m-access.log main;

location / {
	#域名重定向
		if ($host = 'www.accp.com') {
			rewrite ^/(.*)$ http://www.kgc.com/$1 permanent;
		}
		root	/usr/share/nginx/html;
		index	index.html index.htm;
	}
	
[root@localhost ~]# systemctl reload nginx

浏览器输入模拟访问http://www.accp.com/test/1/index.php(虽然这个请求内容 是不存在的),会自动跳转到http://www.kgc.com/test/1/index.php,从headers里面可以看到301实现了永久重定向跳转,而且域名后的参数也正常跳转。
在这里插入图片描述

二、应用场景——基于客户端IP访问跳转

公司业务版本上线,所有IP访问任何内容都显示一个固定维护页面,只有公司IP访问正常
所有IP访问任何内容都显示一个固定维护页面,只有公司 IP:192.168.154.177访问正常。

[root@localhost ~]vim /etc/nginx/conf.d/default.conf
	
	listen			80;
	server_name		www.accp.com;

	#charset	koi8-r;
	access_log	/var/log/nginx/www.accp.com-access.log	main;

	set $rewrite true;
	if ($remote_addr = "192.168.154.177") {
		set $rewrite false;
	}
	if ($rewrite = true) {
		rewrite (.+)/main.html;
	}
	location = /main.html {
		root /usr/share/nginx/html;
	}

[root@localhost ~]# echo "<h1>this is web</h1>" > /usr/share/nginx/html/main.html

所有IP用户(除IP :192.168.154.177的用户)访问网址都显示以下页面
在这里插入图片描述

三、应用场景——基于旧、新域名跳转并加目录

将域名http://bbs.accp.com/post下面的发帖都跳转到http://www.kgc.com/bbs/post,且域名跳转后保持参数不变

[root@localhost ~]vim /etc/nginx/conf.d/default.conf
	
	listen			80;
	server_name		bbs.accp.com;

	#charset	koi8-r;
	access_log	/var/log/nginx/www.accp.com-access.log	main;
	
	location /post {
		rewrite (.+) http://www.accp.com/bbs$1 permanent;
	}
[root@localhost ~]# systemctl reload nginx

注意:accp.com.zone 需要更改主机名解析,把www 改为 bbs
在这里插入图片描述

四、应用场景——基于参数匹配的跳转

浏览器访问
http://www.accp.com/100-(100|200)-100.html
跳转到http://www.accp.com页面

[root@localhost ~]vim /etc/nginx/conf.d/default.conf

	listen			80;
	server_name 	www.accp.com;

	#charset koi8-r;
	access_ log /var/log/nginx/www.accp.com-access.log main;

	if ($request_uri ~ ^/100-(100|200)-(\d+).html$) {
		rewrite (.*) http://www.accp.com permanent ;
	}

[root@localhost ~]# systemctl restart nginx

浏览器输入模拟访问
http://www.accp.com/100-100-100.html
自动跳转到www.accp.com
在这里插入图片描述

五、应用场景——基于目录下所有php文件跳转

访问http://www.accp.com/upload/1.php跳转到首页

[root@localhost ~]vim /etc/nginx/conf.d/default.conf

	listen			80;
	server_name 	www.accp.com;

	#charset koi8-r;
	access_ log /var/log/nginx/www.accp.com-access.log main;
	
	location ~* /upload/.*\.php$ {
		rewrite (.+) http://www.accp.com permanent;
	}

[root@localhost ~]# systemctl restart nginx

浏览器输入模拟访问
http://www.accp.com/upload/1.php
自动跳转到www.accp.com

六、应用场景——基于最普通url请求的跳转

访问一个具体的页面跳转到首页

[root@localhost ~]vim /etc/nginx/conf.d/default.conf

	listen			80;
	server_name 	www.accp.com;

	#charset koi8-r;
	access_ log /var/log/nginx/www.accp.com-access.log main;
	
	location ~* ^/abc/123.html {
		rewrite (.+) http://www.accp.com permanent;
	}
	
[root@localhost ~]# systemctl restart nginx

浏览器输入模拟访问
http://www.accp.com/abc/123.html
自动跳转到www.accp.com

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

nginx中rewrite的六种常用跳转(域名、客户端IP ......) 的相关文章

  • Django 模型(model)

    目录 前言 一 Django ORM 什么是ORM ORM 解析过程 ORM 对应关系表 二 数据库配置 Django 如何使用 mysql 数据库 三 定义模型 创建 APP 四 定义模型类 数据库表名 关于主键 属性命名限制 字段类型
  • 二、【React拓展】懒加载 lazy

    文章目录 1 适用点 2 汇总 1 适用点 懒加载往往配合路由一起使用 此处修改的项目是 二 React Router5 路由的基本使用 中的项目 首先从react中引入lazy import lazy from react 修改引入路由组
  • 【Windows API】获取卷标、卷名

    1 卷 gt 卷标 使用FindFirstVolume 和FindNextVolume 函数体系 枚举系统所有卷 Volume 的例子 然后获取卷标 卷类型 这个方式可以枚举出没有驱动器号 卷标 的卷 int TestMode1 HANDL
  • 国信证券笔试题总分120分

    国信证券笔试题总分120分 1 选择题60分 20题 单选 10 每题3分 多选 10 每题3分 2 业务题 每题4分总共20分 2 1 post get请求区别 后退按钮 刷新 无害 数据会被重新提交 浏览器应该告知用户数据会被重新提交
  • 微软DeepSpeed Chat震撼发布,一键RLHF训练千亿级大模型

    一键解锁千亿级ChatGPT 轻松省钱15倍 众所周知 由于OpenAI太不Open 开源社区为了让更多人能用上类ChatGPT模型 相继推出了LLaMa Alpaca Vicuna Databricks Dolly等模型 但由于缺乏一个支
  • PostgreSQL数据库性能监控手段之慢SQL、死锁

    之前接触PostgreSQL数据库甚少 此前经常使用mysql db2 直至入职当前某安全公司后 发现数据库都采用PostgreSQL 由于负责性能测试方向 经常需要诊断数据库方面是否存在性能问题 于是整理了PostgreSQL设置慢SQL
  • 接口调用失败,失败原因:在 ServiceModel 客户端配置部分中,找不到引用协定的默认终结点元素

    我的程序中 已经配置了webserivce了 但是无法再开发环境使用 我想拿到测试环境使用 而webservice又只能在开发环境调用 这个时候 为了解决这种尴尬问题 我只能先将就着用开发时的webservice 在我的web config
  • 18款最佳Bug跟踪管理系统

    对于开发者来说 Bug 往往是他们最头疼的问题 有些 Bug 会隐藏的很深 很难发现 甚至用户已经使用了才出现 这样真是赔了名声又折钱 为了让开发者更早地发现和消灭 Bug 本文收集了 18 款最佳的 Bug 处理应用程序 这些系统有收费也
  • 本地文件上传到linux服务器的几种方法

    本文介绍几种常见的方法 把文件上传到Linux服务器中 飓风科技常见有使用 scp命令 xshell软件里的xftp程序 U盘挂载 服务器自带的lrzsz程序 一 scp使用说明 1 把本机的文件传给目的服务器 1scp get66 pca
  • Linux 安装/卸载 Minio

    安装 创建目录 root t2 local mkdir minio root t2 local cd minio root t2 minio mkdir data 下载 root t2 minio wget https dl min io
  • vue + iview项目构建

    vue js官网 iview vue cli PS vue js有著名的全家桶系列 包含了vue router vuex vue resource 再加上构建工具vue cli 就是一个完整的vue项目的核心构成 使用Vue cli是快速构
  • OAuth2.0 - 刷新令牌

    刷新令牌 Refresh Token 刷新令牌是用于获取访问令牌的凭据 刷新令牌由授权服务器颁发给客户端 用于在当前访问令牌失效或过期时获取新的访问令牌 或者获取具有相同或更窄范围的附加访问令牌 访问令牌可能具有更短的范围 生命周期和少于资
  • Long、Integer、Byte, Double, Float或 Short类型的比较

    开发遇到的一些基础问题 记录一下 场景 比较Long类型的大小 错误用法 或者 正确用法 Long compareTo 解释 Long是一个引用类型 不能通过 进行比较大小 基本数据类型才可以 对于Long Integer Byte Dou
  • 关于java后端Long类型传递雪花ID到前端导致精度不一致和数据不一致问题

    我们数据库使用的是Bigint存放的是雪花ID 我们java实体类使用的是Long类型 我们后端查询的数据库跟我们返回到前端的ID数据不一致 问题 我们数据库存放的是雪花ID java的Long类型可以取值 但是JSON序列号的时候就超过取
  • 深度学习面试:用猫和狗的数据做图像分类,分类的效果不好怎么办?

    首先 我们可以通过训练集和测试集的误差曲线来判断 1 如果训练集精度和测试集精度都不高 则曲线符合欠拟合的表现 1 数据 数据集有较多的标注错误 2 训练模型 可以更换模型 增加训练轮次 减小学习率或使用衰减学习率等方式进行改善 2 如果测
  • 测试工程师须知——自动化测试主要分为哪几类

    近几年随的技术加快前进 人工智能已经悄然无息的来到了我们的身边 可谓是不管是生活 工作等等的一切什么都有人工智能的出现 那对于IT行业或者更详细点的说对于软件测试这一职位是种什么样的变化呢 一 什么自动化测试 什么是自动化测试 这个问题可能
  • stm32f103编写GPIO初始化结构体和初始化函数

    初始化结构体 typedef struct uint16 t GPIO Pin uint16 t GPIO Speed uint16 t GPIO Mode GPIO InitTypeDef 里面有端口 模式和输出模式时的最大速度 再通过两
  • 深入理解Java虚拟机

    什么是Java虚拟机 作为一个Java程序员 我们每天都在写Java代码 我们写的代码都是在一个叫做Java虚拟机的东西上执行的 但是如果要问什么是虚拟机 恐怕很多人就会模棱两可了 在本文中 我会写下我对虚拟机的理解 因为能力所限 可能有些
  • JNI问题

    1 jbyte不能直接替换uint8 t
  • Ubuntu测试使用速腾RS-Lidar-16

    一 获取代码 在想放代码的地方创建文件夹 建议在主目录中 打开终端 输入 mkdir p lidar src cd lidar src git clone https github com RoboSense LiDAR rslidar s

随机推荐

  • mybatis-generator结合freemarker生成简单的service

    首先附上项目的github地址 点击打开链接 第一步 在generatorConfig xml里添加标签 点击进入xml文件对应的dtd文件 在contex那添加需要的标签
  • apisix网关+golang服务 jwt验证

    golang服务使用jwt生成token apisix解析并验证token 1 配置apisix网关jwt 1 在 apisix dashboard 中 新建路由 2 新建路由时开启jwt插件 3 配置jwt插件 algorithm HS2
  • dpdk+ovs安装和编译(一)

    绑定前网卡驱动 root localhost ethtool i enp5s0 driver hinic version firmware version expansion rom version bus info 0000 05 00
  • 学英语的好电影

    1 阿甘正传 FORREST GUMP 主演 Tom Hanks 汤姆 汉克斯 2 电子情书 YOU VE GOT MAIL 主演 Tom Hanks 汤姆 汉克斯 Meg Ryan 梅格 瑞安 3居家男人 THE FAMILY MAN 主
  • 在Vue中将单独一张图片设为背景图并充满整个屏幕

    Vue基础知识 将单独一张图片设为背景图并充满整个屏幕 代码如下 在主div中添加样式 background url xx images 图片名字 jpg 这里的地址是用你项目中图片所在的路径为准 background repeat no
  • 谁拿了最多奖学金

    import java util ArrayList import java util Collections import java util List import java util Scanner public class Main
  • Ubuntu安装配置Samba服务

    一 什么是Samba Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件 由服务器及客户端程序构成 SMB Server Messages Block 信息服务块 是一种在局域网上共享文件和打印机的一种通信协议 它为局域网
  • 如何判断项目有没有用ajax,项目中关于AJAX的使用总结

    一 使用情况 AJAX 是与服务器交换数据并更新部分网页的艺术 在不重新加载整个页面的情况下使用 AJAX的核心 向服务器发送多个请求而无需用户等待来至服务器的响应 二 AJAX的优势 1 异步加载数据 无需切换页面 不需要刷新 2 更佳的
  • 【linux 】添加开机启动项的方法

    目录 linux 添加开机启动项的方法 编辑文件 etc rc local 在 etc init d目录下添加自启动脚本 每次登录自动执行 通过chkconfig命令设置 把脚本注册为系统服务 在crontab中设置 没试过 Linux目录
  • 流程引擎(flowable)之用户任务

    代码示例 查询一个任务并审批 Task task configuration getTaskService createTaskQuery taskAssignee kermit singleResult if StringUtils is
  • Ubuntu18.04软件源修改成国内镜像源

    Ubuntu18 04软件源修改成国内镜像源 修改sources list文件 文件在 etc apt目录下 操作需要root权限 记得加上sudo sudo vim etc apt sources list 添加科大镜像源 在文件最下面加
  • UITabBarController的使用详解及其自定义

    转载自 https www jianshu com p 2f74a5d93faa 简介 UITabBarController 选项卡控制器 与导航控制器一样 也被广泛用于各种ios应用程序 顾名思义 选项卡控制器在屏幕底部显示一系列 选显卡
  • java使用URLconnection下载文件 getContentLength()为-1 的解决办法

    一 起因 APP想要从远程服务器下载一个文件 不想使用网络请求框架 想了解一下原生的实现 于是简单了解了一下URLconnection类的使用 加上参考了网络上的实现 简单实现了文件下载操作 代码如下 long downloadLength
  • angular自定义实现管道

    参考angular官方文档 角 管 angular io 选择 描述 name 要在模板绑定中使用的管道名称 通常使用较小的驼峰大小写 因为名称不能包含连字符 pure 如果为 true 则管道是纯的 这意味着仅当该方法的输入参数时才调用该
  • Visual Studio Code 手动导入 jar包

    前言 为了方便调试 ModBus库包 使用 VSCode 搭建 Java 开发环境 安装过程中的一些问题 JDK 和 JRE 版本不兼容 卸载 原JDK 和 JRE 使用 jdk 8u221 windows x64 安装 安装过程中会让你安
  • Vuforia Virtual Button(虚拟按钮)案例二——按钮事件处理

    一 利用Unity3d进行开发 查看这个脚本 是对虚拟按钮的事件进行监听控制 相应地修改按钮的触发事件可以通过这个类进行 Add the material corresponding to this virtual button to th
  • AI AIgents时代-(四.)应用上手

    HuggingGPT MetaGPT HuggingGPT HuggingGPT是一个多模型调用的 Agent 框架 利用 ChatGPT 作为任务规划器 根据每个模型的描述来选择 HuggingFace 平台上可用的模型 最后根据模型的执
  • Git 代码分支管理 / 版本管理

    Git 代码分支管理 版本管理 在使用 Git 时 基本不可能只有一个分支 即使只有一个人发开 也会考虑代码的安全而分多个分支 多人协同开发时 可能每个人在不同的分支开发 也可能不同团队在不同的分支开发 还有就是不同的功能在不同的分支开发
  • Mybatis中如何传入map参数呢?

    转自 Mybatis中如何传入map参数呢 下文笔者讲述Mybatis的xml中使用map参数的方法分享 如下所示 实现思路 1 将参数类型设置为map 2 在xml中直接使用map的键值获取参数即可 例 Mybatis使用map获取键值的
  • nginx中rewrite的六种常用跳转(域名、客户端IP ......)

    注意 每次做完一个需要将前面的配置文件中配置清除 防止影响结果 一 应用场景 基于域名的跳转 1 公司旧域名www accp com 因业务需求有变更 需要使用新域名www kgc com代替 1 不能废除旧域名 2 从旧域名跳转到新域名